(command.CommandList children: [ (command.FuncDef name: _iproute2_etc body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[11]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [ {(awk)} {(SQ <'!/#/ { print $2 }'>)} {(/etc/iproute2/) ($ VSub_Number '$1')} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [23 37] ) ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [14 48] ) } ] ) } spids: [11] ) ] spids: [11] ) ] spids: [8] ) spids: [4 7] ) (command.AndOr ops: [Op_DAmp] children: [ (command.FuncDef name: _ip body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[64]) op: Equal spids: [64] ) (assign_pair lhs: (lhs_expr.LhsName name:prev spids:[66]) op: Equal spids: [66] ) (assign_pair lhs: (lhs_expr.LhsName name:words spids:[68]) op: Equal spids: [68] ) (assign_pair lhs: (lhs_expr.LhsName name:cword spids:[70]) op: Equal spids: [70] ) ] spids: [62] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(_init_completion)}) (command.ControlFlow token:<ControlFlow_Return return>) ] ) (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(-V)} {(-Version)} {(-rc)} {(-rcvbuf)}] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [88 95 103 16777215] ) (case_arm pat_list: [{(-f)} {(-family)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[112]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'inet inet6 ipx dnet link'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [115 131] ) } ] ) } spids: [112] ) ] spids: [112] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [106 109 141 16777215] ) (case_arm pat_list: [{(-b)} {(-batch)}] action: [ (C {(_filedir)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [144 147 158 16777215] ) (case_arm pat_list: [{(-force)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[165]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <-batch>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [168 184] ) } ] ) } spids: [165] ) ] spids: [165] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [161 162 194 16777215] ) ] spids: [81 85 197] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:subcword spids:[203]) op: Equal spids: [203] ) (assign_pair lhs: (lhs_expr.LhsName name:cmd spids:[205]) op: Equal spids: [205] ) (assign_pair lhs: (lhs_expr.LhsName name:subcmd spids:[207]) op: Equal spids: [207] ) ] spids: [201] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (lhs_expr.LhsName name:subcword spids:[214]) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) cond: (arith_expr.ArithBinary op_id: Arith_Less left: (arith_expr.ArithVarRef token:<Lit_ArithVarLike subcword>) right: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name words> prefix_op: VSub_Pound bracket_op: (bracket_op.WholeArray op_id:Lit_At) spids: [223 229] ) } ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) update: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (lhs_expr.LhsName name:subcword spids:[234]) ) body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: { (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithVarRef token: <Lit_ArithVarLike subcword> ) ) spids: [246 251] ) } right: {(BoolUnary_b -b) (word_part.ExtGlobPart op: <ExtGlob_QMark '?('> arms: [{(atch)}] spids: [256 258] ) } ) ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_n child: {($ VSub_DollarName '$cmd')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:subcmd spids:[279]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithVarRef token: <Lit_ArithVarLike subcword> ) ) spids: [280 285] ) } spids: [279] ) ] spids: [279] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithVarRef token: <Lit_ArithVarLike subcword> ) ) spids: [294 299] ) } right: {(-) (Lit_Other '*')} ) right: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: { (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithVarRef token: <Lit_ArithVarLike subcword> ) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) ) spids: [310 317] ) } right: {(-) (word_part.ExtGlobPart op: <ExtGlob_At '@('> arms: [ {(f) (word_part.ExtGlobPart op: <ExtGlob_QMark '?('> arms: [{(amily)}] spids: [324 326] ) } {(rc) (word_part.ExtGlobPart op: <ExtGlob_QMark '?('> arms: [{(vbuf)}] spids: [329 331] ) } ] spids: [322 332] ) } ) ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cmd spids:[340]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithVarRef token: <Lit_ArithVarLike subcword> ) ) spids: [341 346] ) } spids: [340] ) ] spids: [340] ) ] ) ] spids: [241 349] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolUnary op_id: BoolUnary_z child: {($ VSub_DollarName '$cmd')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Case to_match: {($ VSub_DollarName '$cur')} arms: [ (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c spids:[381]) op: Equal rhs: { (DQ ('-Version -statistics -details -resolve -family\n') ( ' -oneline -timestamp -batch -rcvbuf' ) ) } spids: [381] ) ] spids: [379] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {(1)} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c spids:[400]) op: PlusEqual rhs: {(DQ (' -force'))} spids: [400] ) ] spids: [400] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[406]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$c'))} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [409 425] ) } ] ) } spids: [406] ) ] spids: [406] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [374 376 435 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[442]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (DQ ('help ') (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.SimpleCommand words: [{(ip)} {(help)}] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&' > fd: 2 arg_word: {(1)} ) ] ) (C {(sed)} {(-e)} { (SQ < '/OBJECT := /,/}/!d' > ) } {(-e)} {(SQ <'s/.*{//'>)} {(-e)} {(SQ <'s/}.*//'>)} {(-e)} {(SQ <'s/|//g'>)} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [453 494] ) ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [445 503] ) } ] ) } spids: [442] ) ] spids: [442] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [438 439 513 16777215] ) ] spids: [367 371 516] ) ] spids: [16777215 364] ) ] spids: [16777215 519] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$subcmd')} right: {(help)} ) ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) (command.Case to_match: {($ VSub_DollarName '$cmd')} arms: [ (case_arm pat_list: [{(link)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(add)}] spids: [559 560 567 16777215] ) (case_arm pat_list: [{(delete)}] action: [ (command.Case to_match: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Minus left: (arith_expr.ArithWord w: {($ VSub_DollarName '$cword')} ) right: (arith_expr.ArithWord w: {($ VSub_DollarName '$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: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[600]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <type>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [603 619] ) } ] ) } spids: [600] ) ] spids: [600] ) ] spids: [596 597 624 16777215] ) (case_arm pat_list: [{(3)}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$prev')} right: {(type)} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[645]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ < 'vlan veth vcan dummy\n' > <' ifb macvlan can'> ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [648 665] ) } ] ) } spids: [645] ) ] spids: [645] ) ] ) ] spids: [627 628 670 16777215] ) ] spids: [574 583 673] ) ] spids: [570 571 676 16777215] ) (case_arm pat_list: [{(set)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword') (-) ($ VSub_DollarName '$subcword') } right: {(1)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [16777215 698] ) ] else_action: [ (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [ {(arp)} {(dynamic)} {(multicast)} {(allmulticast)} {(promisc)} {(trailers)} ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[730]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'on off'>)} {(--)} {(DQ ($ VSub_DollarName '$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: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c spids:[784]) op: Equal rhs: { (DQ ('arp dynamic multicast allmulticast\n') ( ' promisc trailers txqueuelen name address\n' ) (' broadcast mtu netns alias') ) } spids: [784] ) ] spids: [782] ) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_DollarName '$prev')} right: { (word_part.ExtGlobPart op: <ExtGlob_At '@('> arms: [{(up)} {(down)}] spids: [798 802] ) } ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c spids:[808]) op: PlusEqual rhs: {(DQ (' up down'))} spids: [808] ) ] spids: [808] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[814]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(DQ ($ VSub_DollarName '$c'))} {(--)} {(DQ ($ VSub_DollarName '$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: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword') (Lit_Other '+') (1) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_available_interfaces)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[875]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'dev group up'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [878 894] ) } ] ) } spids: [875] ) ] spids: [875] ) ] spids: [16777215 869] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [899 912] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[963]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help add delete set show'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [966 984] ) } ] ) } spids: [963] ) ] spids: [963] ) ] ) ] spids: [945 946 989 16777215] ) ] spids: [552 556 992] ) ] spids: [548 549 995 16777215] ) (case_arm pat_list: [{(addr)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(add)} {(change)} {(replace)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [16777215 1031] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$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: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [16777215 1090] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$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: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword') (Lit_Other '+') (1) } ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_available_interfaces)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1159]) op: PlusEqual rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ < 'dev scope to label dynamic\n' > <' permanent tentative deprecated dadfailed temporary\n'> < ' primary secondary up' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1162 1180] ) } ] ) } spids: [1159] ) ] spids: [1159] ) ] spids: [16777215 1153] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$prev')} right: {(dev)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_available_interfaces)})] spids: [1185 1198] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1249]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'help add change replace del\n'> < ' show flush' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1252 1269] ) } ] ) } spids: [1249] ) ] spids: [1249] ) ] ) ] spids: [1231 1232 1274 16777215] ) ] spids: [1003 1007 1277] ) ] spids: [999 1000 1280 16777215] ) (case_arm pat_list: [{(addrlabel)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(list)} {(add)} {(del)} {(flush)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1357]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help list add del flush'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1360 1378] ) } ] ) } spids: [1357] ) ] spids: [1357] ) ] ) ] spids: [1339 1340 1383 16777215] ) ] spids: [1288 1292 1386] ) ] spids: [1284 1285 1389 16777215] ) (case_arm pat_list: [{(route)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(list)} {(flush)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1496]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'help list flush get add del\n'> < ' change append replace monitor' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1499 1516] ) } ] ) } spids: [1496] ) ] spids: [1496] ) ] ) ] spids: [1478 1479 1521 16777215] ) ] spids: [1397 1401 1524] ) ] spids: [1393 1394 1527 16777215] ) (case_arm pat_list: [{(rule)}] action: [ (command.Case to_match: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1586]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help list add del flush'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1589 1607] ) } ] ) } spids: [1586] ) ] spids: [1586] ) ] ) ] spids: [1568 1569 1612 16777215] ) ] spids: [1535 1539 1615] ) ] spids: [1531 1532 1618 16777215] ) (case_arm pat_list: [{(neigh)}] action: [ (command.Case to_match: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1681]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'help add del change replace\n'> < ' show flush' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1684 1701] ) } ] ) } spids: [1681] ) ] spids: [1681] ) ] ) ] spids: [1663 1664 1706 16777215] ) ] spids: [1626 1630 1709] ) ] spids: [1622 1623 1712 16777215] ) (case_arm pat_list: [{(ntable)}] action: [ (command.Case to_match: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1767]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help change show'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1770 1788] ) } ] ) } spids: [1767] ) ] spids: [1767] ) ] ) ] spids: [1749 1750 1793 16777215] ) ] spids: [1720 1724 1796] ) ] spids: [1716 1717 1799 16777215] ) (case_arm pat_list: [{(tunnel)}] action: [ (command.Case to_match: {($ VSub_DollarName '$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: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1858]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ < 'help add change del show prl\n' > <' 6rd'> ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1861 1878] ) } ] ) } spids: [1858] ) ] spids: [1858] ) ] ) ] spids: [1840 1841 1883 16777215] ) ] spids: [1807 1811 1886] ) ] spids: [1803 1804 1889 16777215] ) (case_arm pat_list: [{(maddr)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(add)} {(del)}] spids: [1904 1907 1914 16777215] ) (case_arm pat_list: [{(show)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalOr left: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword') (Lit_Other '+') (1) } ) right: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$prev')} right: {(dev)} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(_available_interfaces)}) (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobNEqual left: {($ VSub_DollarName '$prev')} right: {(dev)} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[1964]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'${COMPREPLY[@]} dev'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1967 1985] ) } ] ) } spids: [1964] ) ] spids: [1964] ) ] ) ] spids: [16777215 1944] ) ] spids: [16777215 1990] ) ] spids: [1917 1918 1993 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2014]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help add del show'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2017 2035] ) } ] ) } spids: [2014] ) ] spids: [2014] ) ] ) ] spids: [1996 1997 2040 16777215] ) ] spids: [1897 1901 2043] ) ] spids: [1893 1894 2046 16777215] ) (case_arm pat_list: [{(mroute)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(show)}] spids: [2061 2062 2069 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2090]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help show'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2093 2109] ) } ] ) } spids: [2090] ) ] spids: [2090] ) ] ) ] spids: [2072 2073 2114 16777215] ) ] spids: [2054 2058 2117] ) ] spids: [2050 2051 2120 16777215] ) (case_arm pat_list: [{(monitor)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(all)}] spids: [2135 2136 2138 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2159]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'help all'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2162 2178] ) } ] ) } spids: [2159] ) ] spids: [2159] ) ] ) ] spids: [2141 2142 2183 16777215] ) ] spids: [2128 2132 2186] ) ] spids: [2124 2125 2189 16777215] ) (case_arm pat_list: [{(xfrm)}] action: [ (command.Case to_match: {($ VSub_DollarName '$subcmd')} arms: [ (case_arm pat_list: [{(state)} {(policy)} {(monitor)}] spids: [2204 2209 2216 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_eq left: {($ VSub_DollarName '$cword')} right: {($ VSub_DollarName '$subcword')} ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[2237]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'state policy monitor'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [2240 2258] ) } ] ) } spids: [2237] ) ] spids: [2237] ) ] ) ] 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)}) ] ) ] )