(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {(DQ ('local and remote forwarding'))} spids: [7] ) ] spids: [7] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DATA) op: Equal rhs: {(/bin/ls) (${ VSub_Name EXEEXT)} spids: [13] ) ] spids: [13] ) (C {(start_sshd)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:base) op:Equal rhs:{(33)} spids:[23])] spids: [23] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:last) op:Equal rhs:{($ VSub_Name '$PORT')} spids:[26])] spids: [26] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fwd) op:Equal rhs:{(DQ )} spids:[29])] spids: [29] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CTL) op: Equal rhs: {(/tmp/openssh.regress.ctl-sock.) ($ VSub_Dollar '$$')} spids: [33] ) ] spids: [33] ) (ForEach iter_name: j iter_words: [{(0)} {(1)} {(2)}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: i iter_words: [{(0)} {(1)} {(2)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:a) op: Equal rhs: {($ VSub_Name '$base') ($ VSub_Name '$j') ($ VSub_Name '$i')} spids: [70] ) ] spids: [70] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:b) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {($ VSub_Name '$a')} {(Lit_Other '+')} {(50)}) ] ) left_token: <Left_Backtick '`'> spids: [77 85] ) } spids: [76] ) ] spids: [76] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:c) op: Equal rhs: {($ VSub_Name '$last')} spids: [88] ) ] spids: [88] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:fwd) op: Equal rhs: { (DQ ($ VSub_Name '$fwd') (' -L') ($ VSub_Name '$a') (':127.0.0.1:') ($ VSub_Name '$b') (' -R') ($ VSub_Name '$b') (':127.0.0.1:') ($ VSub_Name '$c') ) } spids: [96] ) ] spids: [96] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:last) op: Equal rhs: {($ VSub_Name '$a')} spids: [110] ) ] spids: [110] ) ] spids: [67 114] ) spids: [59 65] ) ] spids: [51 116] ) spids: [43 49] ) (ForEach iter_name: p iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:q) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(expr)} {(3)} {(-)} {($ VSub_Name '$p')})] ) left_token: <Left_Backtick '`'> spids: [133 141] ) } spids: [132] ) ] spids: [132] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [(C {(ssh_version)} {($ VSub_Name '$q')})] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:q) op: Equal rhs: {($ VSub_Name '$p')} spids: [156] ) ] spids: [156] ) ] spids: [16777215 153] ) ] spids: [16777215 160] ) (C {(trace)} {(DQ ('start forwarding, fork to background'))}) (C {(rm)} {(-f)} {($ VSub_Name '$CTL')}) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL')} {(-M)} {(-) ($ VSub_Name '$p')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-f)} {($ VSub_Name '$fwd')} {(somehost)} {(sleep)} {(10)} ) (C {(trace)} {(DQ ('transfer over forwarded channels and check result'))}) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-) ($ VSub_Name '$q')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p) ($ VSub_Name '$last')} {(-o)} {(SQ <'ConnectionAttempts=4'>)} {(somehost)} {(cat)} {(${ VSub_Name DATA)} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(${ VSub_Name COPY)} spids: [245] ) ] ) (AndOr children: [ (C {(test)} {(-s)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('failed copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-O)} {(exit)} {(somehost)} ) ] spids: [129 314] ) spids: [123 127] ) (ForEach iter_name: p iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}] do_arg_iter: False body: (DoGroup children: [ (ForEach iter_name: d iter_words: [{(L)} {(R)}] do_arg_iter: False body: (DoGroup children: [ (C {(trace)} { (DQ ('exit on -') ($ VSub_Name '$d') (' forward failure, proto ') ($ VSub_Name '$p') ) } ) (C {(${ VSub_Name SSH)} {(-) ($ VSub_Name '$p')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (01) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (02) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (03) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (04) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-oExitOnForwardFailure) (Lit_Other '=') (yes)} {(somehost)} {(true)} ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(fatal)} {(DQ ('connection failed, should not'))})] spids: [16777215 452] ) ] else_action: [ (C {(${ VSub_Name SSH)} {(-q)} {(-) ($ VSub_Name '$p')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (01) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (02) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (03) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (01) (Lit_Other ':') (localhost) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-) ($ VSub_Name '$d')} {(${ VSub_Name base) (04) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-oExitOnForwardFailure) (Lit_Other '=') (yes)} {(somehost)} {(true)} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:r) op: Equal rhs: {($ VSub_QMark '$?')} spids: [564] ) ] spids: [564] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$r')} {(KW_Bang '!') (Lit_Other '=')} {(255)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(fail)} { (DQ ('connection not termintated, but should (') ($ VSub_Name '$r') (')') ) } ) ] spids: [16777215 582] ) ] spids: [16777215 594] ) ] spids: [462 597] ) ] spids: [341 599] ) spids: [335 339] ) ] spids: [328 601] ) spids: [322 326] ) (ForEach iter_name: p iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}] do_arg_iter: False body: (DoGroup children: [ (C {(trace)} {(DQ ('simple clear forwarding proto ') ($ VSub_Name '$p'))}) (C {(${ VSub_Name SSH)} {(-) ($ VSub_Name '$p')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-oClearAllForwardings) (Lit_Other '=') (yes)} {(somehost)} {(true)} ) (C {(trace)} {(DQ ('clear local forward proto ') ($ VSub_Name '$p'))}) (C {(rm)} {(-f)} {($ VSub_Name '$CTL')}) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL')} {(-M)} {(-) ($ VSub_Name '$p')} {(-f)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-L)} {(${ VSub_Name base) (01) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-oClearAllForwardings) (Lit_Other '=') (yes)} {(somehost)} {(sleep)} {(10)} ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(fail)} {(DQ ('connection failed with cleared local forwarding'))})] spids: [16777215 721] ) ] else_action: [ (AndOr children: [ (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-) ($ VSub_Name '$p')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p)} {(${ VSub_Name base) (01)} {(somehost)} {(true)} ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [763] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [766] ) ] ) (C {(fail)} {(DQ ('local forwarding not cleared'))}) ] op_id: Op_DAmp ) ] spids: [731 780] ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-O)} {(exit)} {(somehost)} ) (C {(trace)} {(DQ ('clear remote forward proto ') ($ VSub_Name '$p'))}) (C {(rm)} {(-f)} {($ VSub_Name '$CTL')}) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL')} {(-M)} {(-) ($ VSub_Name '$p')} {(-f)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-R)} {(${ VSub_Name base) (01) (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(-oClearAllForwardings) (Lit_Other '=') (yes)} {(somehost)} {(sleep)} {(10)} ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(fail)} {(DQ ('connection failed with cleared remote forwarding'))})] spids: [16777215 878] ) ] else_action: [ (AndOr children: [ (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-) ($ VSub_Name '$p')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p)} {(${ VSub_Name base) (01)} {(somehost)} {(true)} ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$TEST_REGRESS_LOGFILE')} spids: [920] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [923] ) ] ) (C {(fail)} {(DQ ('remote forwarding not cleared'))}) ] op_id: Op_DAmp ) ] spids: [888 937] ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-O)} {(exit)} {(somehost)} ) ] spids: [615 959] ) spids: [609 613] ) (ForEach iter_name: p iter_words: [{(2)}] do_arg_iter: False body: (DoGroup children: [ (C {(trace)} {(DQ ('stdio forwarding proto ') ($ VSub_Name '$p'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmd) op: Equal rhs: { (DQ (${ VSub_Name SSH) (' -') ($ VSub_Name '$p') (' -F ') ($ VSub_Name '$OBJ') (/ssh_config) ) } spids: [982] ) ] spids: [982] ) (C {($ VSub_Name '$cmd')} {(-o)} { (DQ ('ProxyCommand ') ($ VSub_Name '$cmd') (' -q -W localhost:') ($ VSub_Name '$PORT') (' somehost') ) } {(somehost)} {(true)} ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(fail)} {(DQ ('stdio forwarding proto ') ($ VSub_Name '$p'))})] spids: [16777215 1028] ) ] spids: [16777215 1039] ) ] spids: [971 1041] ) spids: [967 969] ) (SimpleCommand words: [ {(echo)} {(DQ ('LocalForward ') (${ VSub_Name base) ('01 127.0.0.1:') ($ VSub_Name '$PORT'))} ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$OBJ') (/ssh_config)} spids: [1055] ) ] ) (SimpleCommand words: [ {(echo)} {(DQ ('RemoteForward ') (${ VSub_Name base) ('02 127.0.0.1:') (${ VSub_Name base) (01))} ] redirects: [ (Redir op_id: Redir_DGreat fd: 16777215 arg_word: {($ VSub_Name '$OBJ') (/ssh_config)} spids: [1074] ) ] ) (ForEach iter_name: p iter_words: [{(${ VSub_Name SSH_PROTOCOLS)}] do_arg_iter: False body: (DoGroup children: [ (C {(trace)} {(DQ ('config file: start forwarding, fork to background'))}) (C {(rm)} {(-f)} {($ VSub_Name '$CTL')}) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL')} {(-M)} {(-) ($ VSub_Name '$p')} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-f)} {(somehost)} {(sleep)} {(10)} ) (C {(trace)} {(DQ ('config file: transfer over forwarded channels and check result'))}) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p) (${ VSub_Name base) (02)} {(-o)} {(SQ <'ConnectionAttempts=4'>)} {(somehost)} {(cat)} {(${ VSub_Name DATA)} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(${ VSub_Name COPY)} spids: [1173] ) ] ) (AndOr children: [ (C {(test)} {(-s)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('failed copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-O)} {(exit)} {(somehost)} ) ] spids: [1090 1242] ) spids: [1084 1088] ) (ForEach iter_name: p iter_words: [{(2)}] do_arg_iter: False body: (DoGroup children: [ (C {(trace)} {(DQ ('transfer over chained unix domain socket forwards and check result'))}) (C {(rm)} {(-f)} {($ VSub_Name '$OBJ') (/unix-) (Lit_Other '[') (123) (Lit_Other ']') (.fwd)} ) (C {(rm)} {(-f)} {($ VSub_Name '$CTL')} {($ VSub_Name '$CTL') (.) (Lit_Other '[') (123) (Lit_Other ']')} ) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL')} {(-M)} {(-f)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-R) (${ VSub_Name base) (01) (Lit_Other ':') (Lit_Other '[') ($ VSub_Name '$OBJ') (/unix-1.fwd) (Lit_Other ']') } {(somehost)} {(sleep)} {(10)} ) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL') (.1)} {(-M)} {(-f)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-L) (Lit_Other '[') ($ VSub_Name '$OBJ') (/unix-1.fwd) (Lit_Other ']') (Lit_Other ':') (Lit_Other '[') ($ VSub_Name '$OBJ') (/unix-2.fwd) (Lit_Other ']') } {(somehost)} {(sleep)} {(10)} ) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL') (.2)} {(-M)} {(-f)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-R) (Lit_Other '[') ($ VSub_Name '$OBJ') (/unix-2.fwd) (Lit_Other ']') (Lit_Other ':') (Lit_Other '[') ($ VSub_Name '$OBJ') (/unix-3.fwd) (Lit_Other ']') } {(somehost)} {(sleep)} {(10)} ) (C {(${ VSub_Name SSH)} {(-S)} {($ VSub_Name '$CTL') (.3)} {(-M)} {(-f)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-L) (Lit_Other '[') ($ VSub_Name '$OBJ') (/unix-3.fwd) (Lit_Other ']') (Lit_Other ':') (127.0.0.1) (Lit_Other ':') ($ VSub_Name '$PORT') } {(somehost)} {(sleep)} {(10)} ) (SimpleCommand words: [ {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-p) (${ VSub_Name base) (01)} {(-o)} {(SQ <'ConnectionAttempts=4'>)} {(somehost)} {(cat)} {(${ VSub_Name DATA)} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(${ VSub_Name COPY)} spids: [1462] ) ] ) (AndOr children: [ (C {(test)} {(-s)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('failed copy ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(cmp)} {(${ VSub_Name DATA)} {(${ VSub_Name COPY)}) (C {(fail)} {(DQ ('corrupted copy of ') (${ VSub_Name DATA))}) ] op_id: Op_DPipe ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL')} {(-O)} {(exit)} {(somehost)} ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL') (.1)} {(-O)} {(exit)} {(somehost)} ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL') (.2)} {(-O)} {(exit)} {(somehost)} ) (C {(${ VSub_Name SSH)} {(-F)} {($ VSub_Name '$OBJ') (/ssh_config)} {(-S)} {($ VSub_Name '$CTL') (.3)} {(-O)} {(exit)} {(somehost)} ) ] spids: [1254 1594] ) spids: [1250 1252] ) ] )