(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NET_INADDR_ANY='> name:NET_INADDR_ANY) op: assign_op.Equal rhs: {(DQ <0.0.0.0>)} spids: [82] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'NET_IN6ADDR_ANY_INIT='> name: NET_IN6ADDR_ANY_INIT ) op: assign_op.Equal rhs: {(DQ <'::0'>)} spids: [87] ) ] redirects: [] ) (command.ShFunction name: warn_failed_ifs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [ {<echo>} {(DQ <'Failed to '> ($ Id.VSub_Number 1) <' interface(s):'> ($ Id.VSub_Number 2))} ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/msglog'>})] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: shcat body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-ge>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<i>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children:[(C {<echo>} {(DQ ($ Id.VSub_DollarName i))})]) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number 1)} ) ] ) (C {<shift>}) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: net_record_err body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'message='> name:message) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [192] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [196] ) ] redirects: [] ) (command.Pipeline children: [(C {<echo>} {(DQ ($ Id.VSub_DollarName message))}) (C {<smf_console>})] negated: F stderr_indices: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName err)} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (C {<echo>} {(DQ <'Error code = '> ($ Id.VSub_DollarName err))}) (C {<smf_console>}) ] negated: F stderr_indices: [] ) ] spids: [212 225] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<unset>} {<inet_list>} {<inet_plumbed>} {<inet_failed>} {<inet6_list>} {<inet6_plumbed>} {<inet6_failed>} {<ipmp_list>} {<ipmp_created>} {<ipmp_failed>} {<ipmp6_list>} {<ipmp6_created>} {<ipmp6_failed>} ) (command.ShFunction name: get_physical body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ORIGIFS='> name:ORIGIFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName IFS))} spids: [342] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name IFS) <':'>)} spids: [348] ) ] redirects: [] ) (C {<set>} {<-->} {($ Id.VSub_Number 1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ORIGIFS))} spids: [364] ) ] redirects: [] ) (C {<echo>} {($ Id.VSub_Number 1)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_logical body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ORIGIFS='> name:ORIGIFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName IFS))} spids: [403] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name IFS) <':'>)} spids: [409] ) ] redirects: [] ) (C {<set>} {<-->} {($ Id.VSub_Number 1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName ORIGIFS))} spids: [425] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<echo>} {<0>})] spids: [432 445] ) ] else_action: [(C {<echo>} {($ Id.VSub_Number 2)})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: if_comp body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<physical_comp>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)}) (C {<Id.Lit_LBracket '['>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_logical>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } {<-eq>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_logical>} {($ Id.VSub_Number 2)}) right: <Id.Backtick_Right '`'> ) } {<Id.Lit_RBracket ']'>} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: physical_comp body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Id.Lit_LBracket '['>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_physical>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_Equals '='>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_physical>} {($ Id.VSub_Number 2)}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_RBracket ']'>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: in_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [600] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'item='> name:item) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [604] ) ] redirects: [] ) (C {<shift>} {<2>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {($ Id.VSub_DollarName op)} {($ Id.VSub_DollarName item)} {($ Id.VSub_Number 1)} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (C {<shift>}) ] ) redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_groupifname body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (C {<'/sbin/ipmpstat'>} {<-gP>} {<-o>} {<groupname> <Id.Lit_Comma ','> <group>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple words: [{<read>} {<name>} {<ifname>}] redirects: [] more_env: [(env_pair name:IFS val:{<Id.Lit_Colon ':'>} spids:[693])] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName name))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName ifname))}) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [706 723] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: create_ipmp body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{<'/sbin/ifconfig'>} {($ Id.VSub_Number 1)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [{<'/sbin/ifconfig'>} {($ Id.VSub_Number 1)} {<inet6>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] ) (command.Simple words: [ {<'/sbin/ifconfig'>} {($ Id.VSub_Number 1)} {($ Id.VSub_Number 3)} {<ipmp>} {<group>} {($ Id.VSub_Number 2)} ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: create_groupifname body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ForEach iter_names: [a] iterable: (for_iter.Words words: [{(DQ )} {<1>} {<2>} {<3>} {<4>} {<5>} {<6>} {<7>} {<8>} {<9>}] ) body: (command.DoGroup children: [ (command.ForEach iter_names: [b] iterable: (for_iter.Words words: [{<0>} {<1>} {<2>} {<3>} {<4>} {<5>} {<6>} {<7>} {<8>} {<9>}] ) body: (command.DoGroup children: [ (command.ForEach iter_names: [c] iterable: (for_iter.Words words: [{<0>} {<1>} {<2>} {<3>} {<4>} {<5>} {<6>} {<7>} {<8>} {<9>}] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName a))} {<Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName b))} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'b='> name: b ) op: assign_op.Equal rhs: {(DQ )} spids: [994] ) ] redirects: [] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<create_ipmp>} {<ipmp> ($ Id.VSub_DollarName a) ($ Id.VSub_DollarName b) ($ Id.VSub_DollarName c) } {($ Id.VSub_Number 1)} {($ Id.VSub_Number 2)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {<ipmp> ($ Id.VSub_DollarName a) ($ Id.VSub_DollarName b) ($ Id.VSub_DollarName c) } ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [999 1013] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) ] ) redirects: [] ) ] ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_hostname_ipmpinfo body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 2))} arms: [ (case_arm pat_list: [{<inet>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {<'/etc/hostname.'> ($ Id.VSub_Number 1)} spids: [1084] ) ] redirects: [] ) ] spids: [1081 1082 1089 -1] ) (case_arm pat_list: [{<inet6>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: {<'/etc/hostname6.'> ($ Id.VSub_Number 1)} spids: [1095] ) ] redirects: [] ) ] spids: [1092 1093 1100 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(command.ControlFlow token:<Id.ControlFlow_Return return>)] spids: [1103 1104 1110 -1] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} {<-r>} {(DQ ($ Id.VSub_DollarName file))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [1134] ) ] redirects: [] ) (C {<shift>} {<2>}) (command.Pipeline children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<line>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName line))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (C {<'/sbin/ifparse'>} {<-s>} {(DQ ($ Id.VSub_DollarName type))} {($ Id.VSub_DollarName line)} ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName file))} ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<one>} {<two>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ForEach iter_names: [keyword] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName one))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName keyword))} {<Id.Lit_RBracket ']'>} ) (C {<echo>} { (DQ ($ Id.VSub_DollarName one) <' '> ($ Id.VSub_DollarName two)) } ) ] ) ] ) redirects: [] ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_group_for_type body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'physical='> name:physical) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_physical>} {($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } spids: [1300] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [1310] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group) op: assign_op.Equal rhs: {(DQ )} spids: [1314] ) ] redirects: [] ) (C {<shift>} {<2>}) (command.Pipeline children: [ (command.ForEach iter_names: [ifname] iterable: (for_iter.Words words:[{(DQ ($ Id.VSub_At '@'))}]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<if_comp>} {(DQ ($ Id.VSub_DollarName physical))} {($ Id.VSub_DollarName ifname)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<get_hostname_ipmpinfo>} {($ Id.VSub_DollarName ifname)} {($ Id.VSub_DollarName type)} {<group>} ) ] spids: [1355 1366] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_Colon ':'>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<read>} {<keyword>} {<grname>}) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName group))}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName grname))} spids: [1418] ) ] redirects: [] ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_group body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_group_for_type>} {($ Id.VSub_Number 1)} {<inet6>} {($ Id.VSub_DollarName inet6_list)} ) right: <Id.Backtick_Right '`'> ) } spids: [1457] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName group))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_group_for_type>} {($ Id.VSub_Number 1)} {<inet>} {($ Id.VSub_DollarName inet_list)} ) right: <Id.Backtick_Right '`'> ) } spids: [1483] ) ] redirects: [] ) ] ) (C {<echo>} {($ Id.VSub_DollarName group)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: not_vrrp_interface body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'macaddrtype='> name:macaddrtype) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<'/sbin/dladm'>} {<show-vnic>} {($ Id.VSub_Number 1)} {<-o>} {<MACADDRTYPE>} {<-p>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [1529] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName macaddrtype))} arms: [ (case_arm pat_list: [{(SQ <vrrp>) <Id.Lit_Star '*'> (SQ ) ($ Id.VSub_Number 2) (SQ )}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vrrp='> name:vrrp) op: assign_op.Equal rhs: {<1>} spids: [1571] ) ] redirects: [] ) ] spids: [1560 1569 1575 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vrrp='> name:vrrp) op: assign_op.Equal rhs: {<0>} spids: [1581] ) ] redirects: [] ) ] spids: [1578 1579 1585 -1] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName vrrp)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: doDHCPhostname body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/dhcp.'> ($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/hostname.'> ($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<set>} {<-->} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<shcat>} {<'/etc/hostname.'> ($ Id.VSub_Number 1)}) right: <Id.Backtick_Right '`'> ) } ) (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<2>} {<-a>} {(DQ ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {(DQ <inet>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] spids: [1620 1643] ) ] else_action: [] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'inet_oneline_epilogue_no_up='> name: inet_oneline_epilogue_no_up ) op: assign_op.Equal rhs: {(DQ <'netmask + broadcast +'>)} spids: [1780] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'inet_oneline_epilogue='> name: inet_oneline_epilogue ) op: assign_op.Equal rhs: {(DQ <'netmask + broadcast + up'>)} spids: [1785] ) ] redirects: [] ) (command.ShFunction name: inet_process_hostname body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<doDHCPhostname>} {($ Id.VSub_Number 2)}) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Id.Lit_Colon ':'>})] spids: [1798 1805] ) ] else_action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_Colon ':'>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'multiple_lines='> name: multiple_lines ) op: assign_op.Equal rhs: {<false>} spids: [1842] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifcmds='> name:ifcmds) op: assign_op.Equal rhs: {(DQ )} spids: [1846] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'retval='> name:retval) op: assign_op.Equal rhs: {<0>} spids: [1851] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<one>} {<rest>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ifcmds))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {($ Id.VSub_Star '*')} {($ Id.VSub_DollarName ifcmds)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'retval='> name: retval ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1906] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'multiple_lines='> name: multiple_lines ) op: assign_op.Equal rhs: {<true>} spids: [1910] ) ] redirects: [] ) ] spids: [1868 1881] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName one))} {<Id.Lit_Equals '='>} {<ipmp>} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'one='> name: one ) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [1952] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifcmds='> name: ifcmds ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName one) <' '> ($ Id.VSub_DollarName rest) ) } spids: [1955] ) ] redirects: [] ) ] ) redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName ifcmds))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName retval)} ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName multiple_lines)} {<Id.Lit_Equals '='>} {<false>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<not_vrrp_interface>} {($ Id.VSub_Number 2)} {($ Id.VSub_Number 3)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'estr='> name: estr ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName inet_oneline_epilogue))} spids: [2052] ) ] redirects: [] ) ] spids: [2040 2049] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'estr='> name: estr ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName inet_oneline_epilogue_no_up))} spids: [2061] ) ] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'ifcmds='> name: ifcmds ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName ifcmds) <' '> ($ Id.VSub_DollarName estr) ) } spids: [2070] ) ] redirects: [] ) ] spids: [2004 2017] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {($ Id.VSub_Star '*')} {($ Id.VSub_DollarName ifcmds)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName retval)} ) ] ) redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: inet6_process_hostname body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'retval='> name:retval) op: assign_op.Equal rhs: {<0>} spids: [2177] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<one>} {<rest>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName one))} {<Id.Lit_Equals '='>} {<ipmp>} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'one='> name:one) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [2219] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ifcmds='> name:ifcmds) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName one) <' '> ($ Id.VSub_DollarName rest))} spids: [2222] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName ifcmds))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {($ Id.VSub_Star '*')} {($ Id.VSub_DollarName ifcmds)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'retval='> name: retval ) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [2253] ) ] redirects: [] ) ] ) ] spids: [2231 2244] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName retval)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: move_addresses body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [2301] ) ] redirects: [] ) (C {<eval>} { (DQ <'failed='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name type) <_failed> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) (C {<eval>} { (DQ <'list='> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) (${ Id.VSub_Name type) <_list> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'process_func='> name:process_func) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name type) <_process_hostname>)} spids: [2335] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'processed='> name:processed) op: assign_op.Equal rhs: {(DQ )} spids: [2344] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName type))} {<Id.Lit_Equals '='>} {<inet>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'typedesc='> name:typedesc) op: assign_op.Equal rhs: {(DQ <IPv4>)} spids: [2368] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'zaddr='> name:zaddr) op: assign_op.Equal rhs: {(DQ <0.0.0.0>)} spids: [2374] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostpfx='> name:hostpfx) op: assign_op.Equal rhs: {(DQ <'/etc/hostname'>)} spids: [2380] ) ] redirects: [] ) ] spids: [2350 2365] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'typedesc='> name:typedesc) op: assign_op.Equal rhs: {(DQ <IPv6>)} spids: [2389] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'zaddr='> name:zaddr) op: assign_op.Equal rhs: {(DQ <'::'>)} spids: [2395] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostpfx='> name:hostpfx) op: assign_op.Equal rhs: {(DQ <'/etc/hostname6'>)} spids: [2401] ) ] redirects: [] ) ] redirects: [] ) (command.Simple words: [ {<echo>} { (DQ <'Moving addresses from missing '> (${ Id.VSub_Name typedesc) <' interface(s):'> <Id.Lit_BadBackslash '\\'> <c> ) } ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/msglog'>})] more_env: [] do_fork: T ) (command.ForEach iter_names: [ifname] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName failed)}]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<in_list>} {<if_comp>} {($ Id.VSub_DollarName ifname)} {($ Id.VSub_DollarName processed)} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'group='> name:group) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_group>} {($ Id.VSub_DollarName ifname)}) right: <Id.Backtick_Right '`'> ) } spids: [2456] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName group))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<in_list>} {<physical_comp>} {($ Id.VSub_DollarName ifname)} {($ Id.VSub_DollarName processed)} ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [ {<echo>} { (DQ <' '> ($ Id.VSub_DollarName ifname) <' (not moved -- not'> ) } {(DQ <'in an IPMP group)'> <Id.Lit_BadBackslash '\\'> <c>)} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/msglog'>} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'processed='> name: processed ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName processed) <' '> ($ Id.VSub_DollarName ifname) ) } spids: [2516] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [2466 2479] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'grifname='> name:grifname) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_groupifname>} {($ Id.VSub_DollarName group)}) right: <Id.Backtick_Right '`'> ) } spids: [2550] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName grifname))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'grifname='> name:grifname) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<create_groupifname>} {($ Id.VSub_DollarName group)} {($ Id.VSub_DollarName type)} ) right: <Id.Backtick_Right '`'> ) } spids: [2572] ) ] redirects: [] ) ] ) (command.Pipeline children: [ (C {<'/sbin/ifparse'>} {<-f>} {($ Id.VSub_DollarName type)} { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.ForEach iter_names: [item] iterable: (for_iter.Words words: [{($ Id.VSub_DollarName list)}] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<if_comp>} {($ Id.VSub_DollarName ifname)} {($ Id.VSub_DollarName item)} ) (command.Simple words: [ {($ Id.VSub_DollarName process_func)} {<'/sbin/ifparse'>} {($ Id.VSub_DollarName type)} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName hostpfx) <.> ($ Id.VSub_DollarName item) } ) ] more_env: [] do_fork: T ) ] ) ] ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<three>} {<four>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName three))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<addif>} {<Id.Lit_RBracket ']'>} ) (C {<echo>} { (DQ ($ Id.VSub_DollarName three) <' '> ($ Id.VSub_DollarName four) <' '> <Id.Lit_BadBackslash '\\'> <c> ) } ) ] ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<one>} {<two>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName one))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (DQ ($ Id.VSub_DollarName one) <' '> ($ Id.VSub_DollarName two)) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName inet_oneline_epilogue))} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line='> name:line) op: assign_op.Equal rhs: { (DQ <'addif '> ($ Id.VSub_DollarName zaddr) <' '> ($ Id.VSub_DollarName one) <' '> ($ Id.VSub_DollarName two) ) } spids: [2812] ) ] redirects: [] ) (command.Simple words: [ {<'/sbin/ifconfig'>} {($ Id.VSub_DollarName grifname)} {($ Id.VSub_DollarName type)} {($ Id.VSub_DollarName line)} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName ifname))} {<Id.Lit_Equals '='>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<get_physical>} {($ Id.VSub_DollarName ifname)}) right: <Id.Backtick_Right '`'> ) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Pipeline children: [ (command.Simple words: [ {($ Id.VSub_DollarName process_func)} {<'/sbin/ifparse'>} {<-f>} {($ Id.VSub_DollarName type)} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName hostpfx) <.> ($ Id.VSub_DollarName ifname) } ) ] more_env: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<one>} {<two>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName one))} {<Id.Lit_Equals '='>} {<addif>} {<Id.Lit_RBracket ']'>} ) (command.Simple words: [ {<'/sbin/ifconfig'>} {($ Id.VSub_DollarName grifname)} {($ Id.VSub_DollarName type)} {<addif>} {($ Id.VSub_DollarName two)} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) ] ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) ] spids: [2863 2886] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<in_list>} {<physical_comp>} {($ Id.VSub_DollarName ifname)} {($ Id.VSub_DollarName processed)} ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'processed='> name: processed ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName processed) <' '> ($ Id.VSub_DollarName ifname) ) } spids: [2972] ) ] redirects: [] ) (command.Simple words: [ {<echo>} { (DQ <' '> ($ Id.VSub_DollarName ifname) <' (moved to '> ($ Id.VSub_DollarName grifname) <')'> <Id.Lit_BadBackslash '\\'> <c> ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/msglog'>} ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) ] ) redirects: [] ) (command.Simple words: [{<echo>} {(DQ <.>)}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/msglog'>})] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: ipadm_from_gz_if body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pif='> name:pif) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [ {<'/sbin/ipadm'>} {<show-if>} {<-o>} {<persistent>} {<-p>} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (C {<egrep>} {(SQ <'4|6'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [3041] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (C {<smf_is_globalzone>}) (C {<Id.KW_Bang '!'> <Id.KW_DLeftBracket '[['>} {($ Id.VSub_DollarName pif)} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {<Id.Lit_Star '*'> <4> <Id.Lit_Star '*'>} ) (C {($ Id.VSub_DollarName pif)} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {<Id.Lit_Star '*'> <6> <Id.Lit_Star '*'>} {<Id.Lit_RBracket ']'> <Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>})] spids: [3070 3103] ) ] else_action: [ (command.Simple words: [{<'/sbin/ifconfig'>} {($ Id.VSub_Number 1)} {<plumb>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'l3protect='> name:l3protect) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<'/sbin/ipadm'>} {<show-if>} {<-o>} {<current>} {<-p>} {($ Id.VSub_Number 1)} ) (C {<grep>} {<-c>} {(SQ <Z>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [3168] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName l3protect)} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [3194 3207] ) ] else_action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: if_configure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fail='> name:fail) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [3262] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [3265] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'class='> name:class) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} spids: [3269] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'process_func='> name:process_func) op: assign_op.Equal rhs: {(${ Id.VSub_Name type) <_process_hostname>} spids: [3273] ) ] redirects: [] ) (C {<shift>} {<2>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName type))} {<Id.Lit_Equals '='>} {<inet>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <IPv4>)} spids: [3304] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostpfx='> name:hostpfx) op: assign_op.Equal rhs: {(DQ <'/etc/hostname'>)} spids: [3310] ) ] redirects: [] ) ] spids: [3286 3301] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ <IPv6>)} spids: [3319] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hostpfx='> name:hostpfx) op: assign_op.Equal rhs: {(DQ <'/etc/hostname6'>)} spids: [3325] ) ] redirects: [] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName class))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc='> name:desc) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName class) <' '> ($ Id.VSub_DollarName desc))} spids: [3346] ) ] redirects: [] ) ] ) (C {<echo>} { (DQ <'configuring '> ($ Id.VSub_DollarName desc) <' interfaces:'> <Id.Lit_BadBackslash '\\'> <c> ) } ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.Simple words: [ {($ Id.VSub_DollarName process_func)} {<'/sbin/ifconfig'>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName type)} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName hostpfx) <.> ($ Id.VSub_Number 1)} ) (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<ipadm_from_gz_if>} {($ Id.VSub_Number 1)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fail='> name: fail ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName fail) <' '> ($ Id.VSub_Number 1) ) } spids: [3439] ) ] redirects: [] ) ] spids: [3422 3436] ) ] else_action: [] redirects: [] ) ] spids: [3400 3414] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName type))} {<Id.Lit_Equals '='>} {<inet6>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<not_vrrp_interface>} {($ Id.VSub_Number 1)} {($ Id.VSub_DollarName type)} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<'/sbin/ifconfig'>} {($ Id.VSub_Number 1)} {<inet6>} {<up>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fail='> name: fail ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName fail) <' '> ($ Id.VSub_Number 1) ) } spids: [3506] ) ] redirects: [] ) ] ) ] spids: [3484 3493] ) ] else_action: [] redirects: [] ) ] spids: [3450 3465] ) ] else_action: [] redirects: [] ) (C {<echo>} {(DQ <' '> ($ Id.VSub_Number 1) <Id.Lit_BadBackslash '\\'> <c>)}) (C {<shift>}) ] ) redirects: [] ) (C {<echo>} {(DQ <.>)}) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName fail))} {<Id.Lit_RBracket ']'>} ) (C {<warn_failed_ifs>} {(DQ <'configure '> ($ Id.VSub_DollarName desc))} {(DQ ($ Id.VSub_DollarName fail))} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: net_reconfigure body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reconfig='> name:reconfig) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-c>} {<-p>} {<'system/reconfigure'>} {<'system/svc/restarter'> <Id.Lit_Colon ':'> <default>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3618] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<-o>} {(DQ ($ Id.VSub_DollarName reconfig))} {<Id.Lit_Equals '='>} {<false>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [3644 3667] ) ] else_action: [] redirects: [] ) (C {<svcadm>} {<enable>} {<-ts>} {<'network/datalink-management'> <Id.Lit_Colon ':'> <default>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: {<0>} spids: [3747] ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName i)} {<-lt>} {<30>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<expr>} {($ Id.VSub_DollarName i)} {<Id.Lit_Other '+'>} {<1>}) right: <Id.Backtick_Right '`'> ) } spids: [3767] ) ] redirects: [] ) (C {<sleep>} {<1>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state='> name:state) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<svcprop>} {<-p>} {<'restarter/state'>} {<'network/datalink-management'> <Id.Lit_Colon ':'> <default>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [3786] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [3810 3823] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName state))} {<Id.Lit_Equals '='>} {(DQ <online>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [3829 3846] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName state))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <online>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ <'The network/datalink-management service '> <Id.Lit_BadBackslash '\\'> <c>) } ) (C {<echo>} {(DQ <'did not come online.'>)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [3858 3876] ) ] else_action: [] redirects: [] ) (C {<'/sbin/dladm'>} {<init-phys>}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: update_pvid body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'datalink='> name:datalink) op: assign_op.Equal rhs: {<'/etc/dladm/datalink.conf'>} spids: [3967] ) ] redirects: [] ) (command.Pipeline children: [ (command.Subshell child: (C {<'/usr/bin/nawk'>} { (SQ <'\n'> <'\t\t\t/^#/ || NF < 2 { next }\n'> <'\t\t\t{ linkdata[$1]=$2; }\n'> <'\t\t\t/;vid=int,1;/ {\n'> <'\t\t\t\tsub(/.*;linkover=int,/, "", $2);\n'> <'\t\t\t\tsub(/;.*/, "", $2);\n'> <'\t\t\t\tlink=linkdata[$2];\n'> <'\t\t\t\tsub(/name=string,/, "", link);\n'> <'\t\t\t\tsub(/;.*/, "", link);\n'> <'\t\t\t\tprint link;\n'> <'\t\t\t}'> ) } {($ Id.VSub_DollarName datalink)} ) redirects: [] ) (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (C {<'/usr/bin/sort'>} {<-u>}) terminator: <Id.Op_Semi _> ) (command.Sentence child: (C {<echo>} {<END>}) terminator: <Id.Op_Semi _> ) (C {<cat>} {($ Id.VSub_DollarName datalink)}) ] ) redirects: [] ) (C {<'/usr/bin/nawk'>} { (SQ <'\n'> <'\t /^END$/ { state=1; }\n'> <'\t state == 0 { usingpvid[++nusingpvid]=$1; next; }\n'> <'\t /^#/ || NF < 2 { next; }\n'> <'\t {\n'> <'\t\t# If it is already present and has a tag set,\n'> <'\t\t# then believe it.\n'> <'\t\tif (!match($2, /;default_tag=/))\n'> <'\t\t\tnext;\n'> <'\t\tsub(/name=string,/, "", $2);\n'> <'\t\tsub(/;.*/, "", $2);\n'> <'\t\tfor (i = 1; i <= nusingpvid; i++) {\n'> <'\t\t\tif (usingpvid[i] == $2)\n'> <'\t\t\t\tusingpvid[i]="";\n'> <'\t\t}\n'> <'\t }\n'> <'\t END {\n'> <'\t\tfor (i = 1; i <= nusingpvid; i++) {\n'> <'\t\t\tif (usingpvid[i] != "") {\n'> <'\t\t\t\tprintf("Warning: default VLAN tag set to 0" \\\n'> <'\t\t\t\t " on %s\\n", usingpvid[i]);\n'> <'\t\t\t\tcmd=sprintf("dladm set-linkprop -p " \\\n'> <'\t\t\t\t "default_tag=0 %s\\n", usingpvid[i]);\n'> <'\t\t\t\tsystem(cmd);\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t }'> ) } ) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: service_exists body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<'/usr/sbin/svccfg'>} {<-s>} {($ Id.VSub_Number 1)} {<listpg>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [4099 4112] ) ] else_action: [] redirects: [] ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: service_is_enabled body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tstate='> name:tstate) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<'/usr/bin/svcprop'>} {<-c>} {<-p>} {<'general_ovr/enabled'>} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4189] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName tstate))} {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] spids: [4208 4221] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state='> name:state) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<'/usr/bin/svcprop'>} {<-c>} {<-p>} {<'general/enabled'>} {($ Id.VSub_Number 1)} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4254] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName state))} {<Id.Lit_Equals '='>} {(DQ <true>)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: is_valid_v4addr body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Number 1)}) (C {<'/usr/xpg4/bin/awk'>} { (SQ <'NF != 1 { exit 1 } \\\n'> <'\t$1 !~ /^((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}\\\n'> <'\t(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$/ \\\n'> <'\t{ exit 1 }'> ) } ) ] negated: F stderr_indices: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: is_valid_v6addr body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_Number 1)}) (C {<'/usr/xpg4/bin/awk'>} { (SQ <'NF != 1 { exit 1 } \\\n'> <'\t# 1:2:3:4:5:6:7:8\n'> <'\t$1 !~ /^([a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}$/ &&\n'> <'\t# 1:2:3::6:7:8\n'> <'\t$1 !~ /^([a-fA-F0-9]{1,4}:){0,6}:([a-fA-F0-9]{1,4}:){0,6}\\\n'> <'\t[a-fA-F0-9]{1,4}$/ && \n'> <'\t# 1:2:3::\n'> <'\t$1 !~ /^([a-fA-F0-9]{1,4}:){0,7}:$/ &&\n'> <'\t# ::7:8\n'> <'\t$1 !~ /^:(:[a-fA-F0-9]{1,4}){0,6}:[a-fA-F0-9]{1,4}$/ && \n'> <'\t# ::f:1.2.3.4\n'> <'\t$1 !~ /^:(:[a-fA-F0-9]{1,4}){0,5}:\\\n'> <'\t((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}\\\n'> <'\t(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$/ &&\n'> <'\t# a:b:c:d:e:f:1.2.3.4\n'> <'\t$1 !~ /^([a-fA-F0-9]{1,4}:){6}\\\n'> <'\t((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}\\\n'> <'\t(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])$/ \\\n'> <'\t{ exit 1 }'> ) } ) ] negated: F stderr_indices: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: is_valid_addr body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<is_valid_v4addr>} {($ Id.VSub_Number 1)}) (C {<is_valid_v6addr>} {($ Id.VSub_Number 1)}) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: nwam_get_loc_prop body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'value='> name:value) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<'/usr/sbin/nwamcfg'>} { (DQ <'select loc '> ($ Id.VSub_Number 1) <'; get -V '> ($ Id.VSub_Number 2) ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4473] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rtn='> name:rtn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [4491] ) ] redirects: [] ) (C {<echo>} {($ Id.VSub_DollarName value)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName rtn)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: nwam_get_loc_list_prop body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'clist='> name:clist) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<'/usr/sbin/nwamcfg'>} { (DQ <'select loc '> ($ Id.VSub_Number 1) <'; get -V '> ($ Id.VSub_Number 2) ) } ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [4538] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rtn='> name:rtn) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [4556] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'slist='> name:slist) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName clist)}) (C {<sed>} {<-e>} {<'s/'> (DQ <','>) <'/'> (DQ <' '>) <'/g'>}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [4576] ) ] redirects: [] ) (C {<echo>} {($ Id.VSub_DollarName slist)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName rtn)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )