(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 '}'>
        )
    )
  ]
)