(CommandList children: [ (AndOr children: [ (FuncDef name: _iptables body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:cur) op:Equal spids:[13]) (assign_pair lhs:(LhsName name:prev) op:Equal spids:[15]) (assign_pair lhs:(LhsName name:words) op:Equal spids:[17]) (assign_pair lhs:(LhsName name:cword) op:Equal spids:[19]) (assign_pair lhs:(LhsName name:split) op:Equal spids:[21]) ] spids: [11] ) (AndOr children: [ (C {(_init_completion)} {(-s)}) (ControlFlow token:<ControlFlow_Return return>) ] op_id: Op_DPipe ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:table) op:Equal spids:[36]) (assign_pair lhs: (LhsName name:chain) op: Equal rhs: {(SQ <'s/^Chain \\([^ ]\\{1,\\}\\).*$/\\1/p'>)} spids: [38] ) ] spids: [34] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [49 54] ) } right: {(Lit_Other '*') (BoolUnary_t -t) (EscapedLiteralPart token: <Lit_EscapedChar '\\ '> ) (Lit_Other '*') (filter) (Lit_Other '*') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:table) op: Equal rhs: {(DQ ('-t filter'))} spids: [71] ) ] spids: [71] ) ] spids: [16777215 68] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [81 86] ) } right: {(Lit_Other '*') (BoolUnary_t -t) (EscapedLiteralPart token: <Lit_EscapedChar '\\ '> ) (Lit_Other '*') (nat) (Lit_Other '*') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:table) op: Equal rhs: {(DQ ('-t nat'))} spids: [103] ) ] spids: [103] ) ] spids: [77 100] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: { (BracedVarSub token: <VSub_Name words> bracket_op: (WholeArray op_id:Lit_At) spids: [113 118] ) } right: {(Lit_Other '*') (BoolUnary_t -t) (EscapedLiteralPart token: <Lit_EscapedChar '\\ '> ) (Lit_Other '*') (mangle) (Lit_Other '*') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:table) op: Equal rhs: {(DQ ('-t mangle'))} spids: [135] ) ] spids: [135] ) ] spids: [109 132] ) ] spids: [16777215 141] ) (Case to_match: {($ VSub_Name '$prev')} arms: [ (case_arm pat_list: [{(-) (Lit_Other '*') (Lit_Other '[') (AIDRPFXLZ) (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)} { (SQ <'`iptables $table -nL | \\\n'> < ' sed -ne "s/^Chain \\([^ ]\\{1,\\}\\).*$/\\1/p"`' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [163 180] ) } ] ) } spids: [160] ) ] spids: [160] ) ] spids: [152 157 185 16777215] ) (case_arm pat_list: [{(-) (Lit_Other '*') (t)}] 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 <'nat filter mangle'>)} {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [197 213] ) } ] ) } spids: [194] ) ] spids: [194] ) ] spids: [188 191 218 16777215] ) (case_arm pat_list: [{(-j)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$table'))} right: {(DQ ('-t filter'))} ) right: (BoolUnary op_id: BoolUnary_z child: {(DQ ($ VSub_Name '$table'))} ) ) ) terminator: <Op_Semi ';'> ) ] 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 <'ACCEPT DROP LOG ULOG REJECT\n'> < ' `iptables $table -nL | sed -ne "$chain" \\\n' > <' -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`'> ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [256 276] ) } ] ) } spids: [253] ) ] spids: [253] ) ] spids: [16777215 250] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$table')} right: {(DQ ('-t nat'))} ) ) terminator: <Op_Semi ';'> ) ] 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 < 'ACCEPT DROP LOG ULOG REJECT MIRROR SNAT\n' > <' DNAT MASQUERADE `iptables $table -nL | \\\n'> < ' sed -ne "$chain" -e "s/OUTPUT|PREROUTING|POSTROUTING//"`' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [302 322] ) } ] ) } spids: [299] ) ] spids: [299] ) ] spids: [281 296] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_Name '$table')} right: {(DQ ('-t mangle'))} ) ) terminator: <Op_Semi ';'> ) ] 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 < 'ACCEPT DROP LOG ULOG REJECT MARK TOS\n' > <' `iptables $table -nL | sed -ne "$chain" \\\n'> < ' -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [348 368] ) } ] ) } spids: [345] ) ] spids: [345] ) ] spids: [327 342] ) ] spids: [16777215 373] ) ] spids: [221 222 376 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name '$cur'))} right: {(-) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] 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 < '--in-interface --out-interface --source\n' > <' --destination --protocol --fragment --match --append --delete\n'> < ' --insert --replace --list --flush --zero --new --delete-chain\n' > <' --policy --rename-chain --proto --source --destination\n'> < ' --in-interface --jump --match --numeric --out-interface --table\n' > <' --verbose --line-numbers --exact --fragment --modprobe\n'> < ' --set-counters --version' > ) } {(--)} {(DQ ($ VSub_Name '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [405 427] ) } ] ) } spids: [402] ) ] spids: [402] ) ] spids: [16777215 399] ) ] spids: [16777215 432] ) ] spids: [379 380 435 16777215] ) ] spids: [145 149 438] ) ] spids: [8] ) spids: [4 7] ) (C {(complete)} {(-F)} {(_iptables)} {(iptables)}) ] op_id: Op_DAmp ) ] )