(CommandList children: [ (FuncDef name: _iproute2_etc body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (DQ (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(awk)} {(SQ <'!/#/ { print $2 }'>)} {(/etc/iproute2/) ($ VSub_Number '$1')} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [34] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [23 37] ) ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [14 48] ) } ] ) } spids: [11] ) ] spids: [11] ) ] spids: [8] ) spids: [4 7] ) (AndOr children: [ (FuncDef name: _ip body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:cur) op:Equal spids:[64]) (assign_pair lhs:(LhsName name:prev) op:Equal spids:[66]) (assign_pair lhs:(LhsName name:words) op:Equal spids:[68]) (assign_pair lhs:(LhsName name:cword) op:Equal spids:[70]) ] spids: [62] ) (AndOr children: [(C {(_init_completion)}) (ControlFlow token:<ControlFlow_Return return>)] op_id: Op_DPipe ) (Case to_match: {($ VSub_Name '$prev')} arms: [ (case_arm pat_list: [{(-V)} {(-Version)} {(-rc)} {(-rcvbuf)}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [88 95 103 16777215] ) (case_arm pat_list: [{(-f)} {(-family)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'inet inet6 ipx dnet link'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [115 131] ) } ] ) } spids: [112] ) ] spids: [112] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [106 109 141 16777215] ) (case_arm pat_list: [{(-b)} {(-batch)}] action: [ (C {(_filedir)}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [144 147 158 16777215] ) (case_arm pat_list: [{(-force)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <-batch>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [168 184] ) } ] ) } spids: [165] ) ] spids: [165] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [161 162 194 16777215] ) ] spids: [81 85 197] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:subcword) op: Equal spids: [203] ) (assign_pair lhs:(LhsName name:cmd) op:Equal spids:[205]) (assign_pair lhs:(LhsName name:subcmd) op:Equal spids:[207]) ] spids: [201] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:subcword) right: (ArithWord w:{(Lit_Digits 1)}) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:subcword) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name words> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [223 229] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:subcword)) body: (DoGroup children: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithVarRef name:subcword)) spids: [246 251] ) } right: {(BoolUnary_b -b) (ExtGlobPart op: <ExtGlob_QMark '?('> spids: [256 258] ) } ) ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] op_id: Op_DAmp ) (AndOr children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_n child:{($ VSub_Name '$cmd')}) ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subcmd) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithVarRef name:subcword)) spids: [280 285] ) } spids: [279] ) ] spids: [279] ) (ControlFlow token: <ControlFlow_Break break> ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) (AndOr children: [ (DBracket expr: (LogicalAnd left: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithVarRef name:subcword)) spids: [294 299] ) } right: {(-) (Lit_Other '*')} ) right: (BoolBinary op_id: BoolBinary_GlobNEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithVarRef name:subcword) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [310 317] ) } right: {(-) (ExtGlobPart op:<ExtGlob_At '@('> spids:[322 332])} ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmd) op: Equal rhs: { (BracedVarSub token: <VSub_Name words> bracket_op: (ArrayIndex expr:(ArithVarRef name:subcword)) spids: [341 346] ) } spids: [340] ) ] spids: [340] ) ] op_id: Op_DAmp ) ] spids: [241 349] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id:BoolUnary_z child:{($ VSub_Name '$cmd')}) ) terminator: <Op_Semi ';'> ) ] action: [ (Case to_match: {($ VSub_Name '$cur')} arms: [ (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:c) op: Equal rhs: { (DQ ('-Version -statistics -details -resolve -family\n') ( ' -oneline -timestamp -batch -rcvbuf' ) ) } spids: [381] ) ] spids: [379] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {(1)} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:c) op: PlusEqual rhs: {(DQ (' -force'))} spids: [400] ) ] spids: [400] ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_Name '$c'))} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [409 425] ) } ] ) } spids: [406] ) ] spids: [406] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [374 376 435 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (DQ ('help ') (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [{(ip)} {(help)}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [459] ) ] ) (C {(sed)} {(-e)} { (SQ < '/OBJECT := /,/}/!d' > ) } {(-e)} {(SQ <'s/.*{//'>)} {(-e)} {(SQ <'s/}.*//'>)} {(-e)} {(SQ <'s/|//g'>)} ) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [453 494] ) ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [445 503] ) } ] ) } spids: [442] ) ] spids: [442] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [438 439 513 16777215] ) ] spids: [367 371 516] ) ] spids: [16777215 364] ) ] spids: [16777215 519] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$subcmd')} right: {(help)} ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] op_id: Op_DAmp ) (Case to_match: {($ VSub_Name '$cmd')} arms: [ (case_arm pat_list: [{(link)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(add)}] spids: [559 560 567 16777215] ) (case_arm pat_list: [{(delete)}] action: [ (Case to_match: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$cword')}) right: (ArithWord w:{($ VSub_Name '$subcword')}) ) spids: [576 581] ) } arms: [ (case_arm pat_list: [{(1)}] action: [(C {(_available_interfaces)})] spids: [586 587 593 16777215] ) (case_arm pat_list: [{(2)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <type>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [603 619] ) } ] ) } spids: [600] ) ] spids: [600] ) ] spids: [596 597 624 16777215] ) (case_arm pat_list: [{(3)}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(type)} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ < 'vlan veth vcan dummy\n' > <' ifb macvlan can'> ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [648 665] ) } ] ) } spids: [645] ) ] spids: [645] ) ] op_id: Op_DAmp ) ] spids: [627 628 670 16777215] ) ] spids: [574 583 673] ) ] spids: [570 571 676 16777215] ) (case_arm pat_list: [{(set)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword') (-) ($ VSub_Name '$subcword') } right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [16777215 698] ) ] else_action: [ (Case to_match: {($ VSub_Name '$prev')} arms: [ (case_arm pat_list: [ {(arp)} {(dynamic)} {(multicast)} {(allmulticast)} {(promisc)} {(trailers)} ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'on off'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [733 751] ) } ] ) } spids: [730] ) ] spids: [730] ) ] spids: [714 727 756 16777215] ) (case_arm pat_list: [ {(txqueuelen)} {(name)} {(address)} {(broadcast)} {(mtu)} {(netns)} {(alias)} ] spids: [759 772 775 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:c) op: Equal rhs: { (DQ ('arp dynamic multicast allmulticast\n') ( ' promisc trailers txqueuelen name address\n' ) (' broadcast mtu netns alias') ) } spids: [784] ) ] spids: [782] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$prev')} right: { (ExtGlobPart op: <ExtGlob_At '@('> spids: [798 802] ) } ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:c) op: PlusEqual rhs: {(DQ (' up down'))} spids: [808] ) ] spids: [808] ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_Name '$c'))} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [817 833] ) } ] ) } spids: [814] ) ] spids: [814] ) ] spids: [778 779 838 16777215] ) ] spids: [707 711 841] ) ] spids: [704 844] ) ] spids: [679 680 847 16777215] ) (case_arm pat_list: [{(show)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword') (Lit_Other '+') (1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_available_interfaces)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'dev group up'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [878 894] ) } ] ) } spids: [875] ) ] spids: [875] ) ] spids: [16777215 869] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [899 912] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(group)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_iproute2_etc)} {(group)})] spids: [918 931] ) ] spids: [16777215 939] ) ] spids: [850 851 942 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help add delete set show'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [966 984] ) } ] ) } spids: [963] ) ] spids: [963] ) ] op_id: Op_DAmp ) ] spids: [945 946 989 16777215] ) ] spids: [552 556 992] ) ] spids: [548 549 995 16777215] ) (case_arm pat_list: [{(addr)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(add)} {(change)} {(replace)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [16777215 1031] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(scope)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_iproute2_etc)} {(rt_scopes)})] spids: [1037 1050] ) ] else_action: [(C {(Lit_Other ':')})] spids: [1058 1067] ) ] spids: [1010 1015 1070 16777215] ) (case_arm pat_list: [{(del)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [16777215 1090] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(scope)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_iproute2_etc)} {(rt_scopes)})] spids: [1096 1109] ) ] else_action: [(C {(Lit_Other ':')})] spids: [1117 1126] ) ] spids: [1073 1074 1129 16777215] ) (case_arm pat_list: [{(show)} {(flush)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword') (Lit_Other '+') (1)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_available_interfaces)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: PlusEqual rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ < 'dev scope to label dynamic\n' > <' permanent tentative deprecated dadfailed temporary\n'> < ' primary secondary up' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1162 1180] ) } ] ) } spids: [1159] ) ] spids: [1159] ) ] spids: [16777215 1153] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [1185 1198] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(scope)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_iproute2_etc)} {(rt_scopes)})] spids: [1204 1217] ) ] spids: [16777215 1225] ) ] spids: [1132 1135 1228 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'help add change replace del\n'> < ' show flush' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1252 1269] ) } ] ) } spids: [1249] ) ] spids: [1249] ) ] op_id: Op_DAmp ) ] spids: [1231 1232 1274 16777215] ) ] spids: [1003 1007 1277] ) ] spids: [999 1000 1280 16777215] ) (case_arm pat_list: [{(addrlabel)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(list)} {(add)} {(del)} {(flush)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [16777215 1318] ) ] else_action: [(C {(Lit_Other ':')})] spids: [1324 1333] ) ] spids: [1295 1302 1336 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help list add del flush'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1360 1378] ) } ] ) } spids: [1357] ) ] spids: [1357] ) ] op_id: Op_DAmp ) ] spids: [1339 1340 1383 16777215] ) ] spids: [1288 1292 1386] ) ] spids: [1284 1285 1389 16777215] ) (case_arm pat_list: [{(route)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(list)} {(flush)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(proto)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_iproute2_etc)} {(rt_protos)})] spids: [16777215 1423] ) ] else_action: [(C {(Lit_Other ':')})] spids: [1431 1440] ) ] spids: [1404 1407 1443 16777215] ) (case_arm pat_list: [{(get)}] spids: [1446 1447 1454 16777215] ) (case_arm pat_list: [{(add)} {(del)} {(change)} {(append)} {(replace)} {(monitor)}] spids: [1457 1468 1475 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'help list flush get add del\n'> < ' change append replace monitor' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1499 1516] ) } ] ) } spids: [1496] ) ] spids: [1496] ) ] op_id: Op_DAmp ) ] spids: [1478 1479 1521 16777215] ) ] spids: [1397 1401 1524] ) ] spids: [1393 1394 1527 16777215] ) (case_arm pat_list: [{(rule)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(add)} {(del)}] spids: [1542 1545 1552 16777215] ) (case_arm pat_list: [{(flush)} {(show)} {(list)} {(lst)}] spids: [1555 1562 1565 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help list add del flush'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1589 1607] ) } ] ) } spids: [1586] ) ] spids: [1586] ) ] op_id: Op_DAmp ) ] spids: [1568 1569 1612 16777215] ) ] spids: [1535 1539 1615] ) ] spids: [1531 1532 1618 16777215] ) (case_arm pat_list: [{(neigh)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(add)} {(del)} {(change)} {(replace)}] spids: [1633 1640 1647 16777215] ) (case_arm pat_list: [{(show)} {(flush)}] spids: [1650 1653 1660 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'help add del change replace\n'> < ' show flush' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1684 1701] ) } ] ) } spids: [1681] ) ] spids: [1681] ) ] op_id: Op_DAmp ) ] spids: [1663 1664 1706 16777215] ) ] spids: [1626 1630 1709] ) ] spids: [1622 1623 1712 16777215] ) (case_arm pat_list: [{(ntable)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(change)}] spids: [1727 1728 1735 16777215] ) (case_arm pat_list: [{(show)}] spids: [1738 1739 1746 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help change show'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1770 1788] ) } ] ) } spids: [1767] ) ] spids: [1767] ) ] op_id: Op_DAmp ) ] spids: [1749 1750 1793 16777215] ) ] spids: [1720 1724 1796] ) ] spids: [1716 1717 1799 16777215] ) (case_arm pat_list: [{(tunnel)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(show)}] spids: [1814 1815 1818 16777215] ) (case_arm pat_list: [{(add)} {(change)} {(del)} {(prl)} {(6rd)}] spids: [1821 1830 1837 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} { (SQ < 'help add change del show prl\n' > <' 6rd'> ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1861 1878] ) } ] ) } spids: [1858] ) ] spids: [1858] ) ] op_id: Op_DAmp ) ] spids: [1840 1841 1883 16777215] ) ] spids: [1807 1811 1886] ) ] spids: [1803 1804 1889 16777215] ) (case_arm pat_list: [{(maddr)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(add)} {(del)}] spids: [1904 1907 1914 16777215] ) (case_arm pat_list: [{(show)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword') (Lit_Other '+') (1) } ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$prev')} right: {(dev)} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_available_interfaces)}) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_Name '$prev')} right: {(dev)} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'${COMPREPLY[@]} dev'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1967 1985] ) } ] ) } spids: [1964] ) ] spids: [1964] ) ] op_id: Op_DAmp ) ] spids: [16777215 1944] ) ] spids: [16777215 1990] ) ] spids: [1917 1918 1993 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help add del show'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2017 2035] ) } ] ) } spids: [2014] ) ] spids: [2014] ) ] op_id: Op_DAmp ) ] spids: [1996 1997 2040 16777215] ) ] spids: [1897 1901 2043] ) ] spids: [1893 1894 2046 16777215] ) (case_arm pat_list: [{(mroute)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(show)}] spids: [2061 2062 2069 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help show'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2093 2109] ) } ] ) } spids: [2090] ) ] spids: [2090] ) ] op_id: Op_DAmp ) ] spids: [2072 2073 2114 16777215] ) ] spids: [2054 2058 2117] ) ] spids: [2050 2051 2120 16777215] ) (case_arm pat_list: [{(monitor)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(all)}] spids: [2135 2136 2138 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help all'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2162 2178] ) } ] ) } spids: [2159] ) ] spids: [2159] ) ] op_id: Op_DAmp ) ] spids: [2141 2142 2183 16777215] ) ] spids: [2128 2132 2186] ) ] spids: [2124 2125 2189 16777215] ) (case_arm pat_list: [{(xfrm)}] action: [ (Case to_match: {($ VSub_Name '$subcmd')} arms: [ (case_arm pat_list: [{(state)} {(policy)} {(monitor)}] spids: [2204 2209 2216 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_Name '$cword')} right: {($ VSub_Name '$subcword')} ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPREPLY) op: Equal rhs: { (ArrayLiteralPart words: [ { (CommandSubPart command_list: (CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'state policy monitor'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2240 2258] ) } ] ) } spids: [2237] ) ] spids: [2237] ) ] op_id: Op_DAmp ) ] spids: [2219 2220 2263 16777215] ) ] spids: [2197 2201 2266] ) ] spids: [2193 2194 2269 16777215] ) ] spids: [541 545 2272] ) ] spids: [59] ) spids: [55 58] ) (C {(complete)} {(-F)} {(_ip)} {(ip)}) ] op_id: Op_DAmp ) ] )