(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'SOCK_CLIENT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOCK_CLIENT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCK_CLIENT='> name:SOCK_CLIENT) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//carp_client'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SOCK_MASTER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOCK_MASTER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCK_MASTER='> name:SOCK_MASTER) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//carp_master'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'SOCK_BACKUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'SOCK_BACKUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SOCK_BACKUP='> name:SOCK_BACKUP) op: assign_op.Equal rhs: {<unix> <Id.Lit_Colon ':'> <'//carp_backup'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BUS='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BUS='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'BUS='> name:BUS) op: assign_op.Equal rhs: {<bus_carp>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IP_CLIENT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IP_CLIENT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_CLIENT='> name:IP_CLIENT) op: assign_op.Equal rhs: {<10.1.1.240>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IP_MASTER='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IP_MASTER='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_MASTER='> name:IP_MASTER) op: assign_op.Equal rhs: {<10.1.1.1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IP_BACKUP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IP_BACKUP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_BACKUP='> name:IP_BACKUP) op: assign_op.Equal rhs: {<10.1.1.2>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'IP_CARP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'IP_CARP='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IP_CARP='> name:IP_CARP) op: assign_op.Equal rhs: {<10.1.1.100>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'TIMEOUT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'TIMEOUT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TIMEOUT='> name:TIMEOUT) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) (command.Simple blame_tok: <atf_test_case> more_env: [] words: [{<atf_test_case>} {<carp_handover>} {<cleanup>}] redirects: [] do_fork: T ) (command.ShFunction name_tok: <carp_handover_head> name: carp_handover_head body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <descr>)} {(DQ <'Tests for CARP handover'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_set> more_env: [] words: [{<atf_set>} {(DQ <require.progs>)} {(DQ <rump_server>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <setup_carp> name: setup_carp body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'sock='> ($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'master='> ($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <local> more_env: [] words: [ {<local>} {<Id.Lit_VarLike 'carpif='>} {<Id.Lit_VarLike 'ip='>} {<Id.Lit_VarLike 'advskew='>} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.VSub_DollarName '$master'> more_env: [] words: [{($ Id.VSub_DollarName master)}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'carpif='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'carpif='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'carpif='> name:carpif) op: assign_op.Equal rhs: {<carp0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip='> name:ip) op: assign_op.Equal rhs: {($ Id.VSub_DollarName IP_MASTER)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'advskew='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'advskew='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'advskew='> name:advskew) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) ] spids: [181 186] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'carpif='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'carpif='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'carpif='> name:carpif) op: assign_op.Equal rhs: {<carp1>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ip='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ip='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ip='> name:ip) op: assign_op.Equal rhs: {($ Id.VSub_DollarName IP_BACKUP)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'advskew='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'advskew='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'advskew='> name:advskew) op: assign_op.Equal rhs: {<200>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName sock)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {($ Id.VSub_DollarName carpif)} {<create>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {($ Id.VSub_DollarName ip) <'/24'>} {<up>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {($ Id.VSub_DollarName carpif)} {<vhid>} {<175>} {<advskew>} {($ Id.VSub_DollarName advskew)} {<advbase>} {<1>} {<pass>} {<s3cret>} {($ Id.VSub_DollarName IP_CARP)} {<netmask>} {<255.255.255.0>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <wait_handover> name: wait_handover body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <local> more_env: [] words: [{<local>} {<Id.Lit_VarLike 'i='> <0>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCK_CLIENT)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName i)} {<-ne>} {<5>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$DEBUG'> more_env: [] words: [{($ Id.VSub_DollarName DEBUG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Trying ping '> ($ Id.VSub_DollarName IP_CARP))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <rump.ping> more_env: [] words: [ {<rump.ping>} {<-n>} {<-w>} {<1>} {<-c>} {<1>} {($ Id.VSub_DollarName IP_CARP)} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$DEBUG'> more_env: [] words: [{($ Id.VSub_DollarName DEBUG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(DQ <'Passed ping '> ($ Id.VSub_DollarName IP_CARP))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Break break>) terminator: <Id.Op_Semi _> ) ] spids: [382 395] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$DEBUG'> more_env: [] words: [{($ Id.VSub_DollarName DEBUG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Failed ping '> ($ Id.VSub_DollarName IP_CARP))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'i='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'i='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName i)} {<-eq>} {<5>} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <atf_fail> more_env: [] words: [{<atf_fail>} {(DQ <'Failed to failover (5 sec)'>)}] redirects: [] do_fork: T ) ] spids: [444 457] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <carp_handover_body> name: carp_handover_body body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <rump_server_start> more_env: [] words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCK_CLIENT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump_server_start> more_env: [] words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCK_MASTER)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump_server_start> more_env: [] words: [{<rump_server_start>} {($ Id.VSub_DollarName SOCK_BACKUP)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump_server_add_iface> more_env: [] words: [ {<rump_server_add_iface>} {($ Id.VSub_DollarName SOCK_CLIENT)} {<shmif0>} {($ Id.VSub_DollarName BUS)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump_server_add_iface> more_env: [] words: [ {<rump_server_add_iface>} {($ Id.VSub_DollarName SOCK_MASTER)} {<shmif0>} {($ Id.VSub_DollarName BUS)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump_server_add_iface> more_env: [] words: [ {<rump_server_add_iface>} {($ Id.VSub_DollarName SOCK_BACKUP)} {<shmif0>} {($ Id.VSub_DollarName BUS)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <setup_carp> more_env: [] words: [{<setup_carp>} {($ Id.VSub_DollarName SOCK_MASTER)} {<true>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <setup_carp> more_env: [] words: [{<setup_carp>} {($ Id.VSub_DollarName SOCK_BACKUP)} {<false>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCK_CLIENT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<shmif0>} {($ Id.VSub_DollarName IP_CLIENT) <'/24'>} {<up>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<rump.ifconfig>} {<-w>} {<10>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName TIMEOUT)} {<-c>} {<1>} {($ Id.VSub_DollarName IP_MASTER)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName TIMEOUT)} {<-c>} {<1>} {($ Id.VSub_DollarName IP_BACKUP)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<4>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCK_MASTER)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$DEBUG'> more_env: [] words: [{($ Id.VSub_DollarName DEBUG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump.ifconfig> more_env: [] words: [{<rump.ifconfig>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'carp: MASTER carpdev shmif0'>)} {<rump.ifconfig>} {<carp0>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCK_BACKUP)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$DEBUG'> more_env: [] words: [{($ Id.VSub_DollarName DEBUG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump.ifconfig> more_env: [] words: [{<rump.ifconfig>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'carp: BACKUP carpdev shmif0'>)} {<rump.ifconfig>} {<carp1>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCK_CLIENT)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName TIMEOUT)} {<-c>} {<1>} {($ Id.VSub_DollarName IP_CARP)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <env> more_env: [] words: [ {<env>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCK_MASTER)} {<rump.halt>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sleep> more_env: [] words: [{<sleep>} {<1>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<not-exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<ignore>} {<rump.ping>} {<-n>} {<-w>} {($ Id.VSub_DollarName TIMEOUT)} {<-c>} {<1>} {($ Id.VSub_DollarName IP_MASTER)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <wait_handover> more_env: [] words: [{<wait_handover>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<Id.Lit_VarLike 'RUMP_SERVER='> ($ Id.VSub_DollarName SOCK_BACKUP)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$DEBUG'> more_env: [] words: [{($ Id.VSub_DollarName DEBUG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rump.ifconfig> more_env: [] words: [{<rump.ifconfig>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <atf_check> more_env: [] words: [ {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<match> <Id.Lit_Colon ':'> (SQ <'carp: MASTER carpdev shmif0'>)} {<rump.ifconfig>} {<carp1>} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <carp_handover_cleanup> name: carp_handover_cleanup body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <Id.VSub_DollarName '$DEBUG'> more_env: [] words: [{($ Id.VSub_DollarName DEBUG)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <dump> more_env: [] words: [{<dump>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <cleanup> more_env: [] words: [{<cleanup>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <atf_init_test_cases> name: atf_init_test_cases body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <atf_add_test_case> more_env: [] words: [{<atf_add_test_case>} {<carp_handover>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )