(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sysdir)
          op: assign_op.Equal
          rhs: {(/sys/class/net)}
          spids: [53]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:netvsc_cls)
          op: assign_op.Equal
          rhs: {(Id.Lit_LBrace '{') (f8615163-df3e-46c5-913f-f2d2f965ed0e) (Id.Lit_RBrace '}')}
          spids: [56]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bondcnt)
          op: assign_op.Equal
          rhs: {(0)}
          spids: [61]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Id.Lit_LBracket '[')} {(-f)} {(/etc/redhat-release)} {(Id.Lit_RBracket ']')})
              terminator: (Token id:Id.Op_Semi val:';' span_id:77)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cfgdir)
                  op: assign_op.Equal
                  rhs: {(/etc/sysconfig/network-scripts)}
                  spids: [82]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:distro)
                  op: assign_op.Equal
                  rhs: {(redhat)}
                  spids: [86]
                )
              ]
            )
          ]
          spids: [68 79]
        )
        (if_arm
          cond: [
            (C {(grep)} {(-q)} {(SQ (Token id:Id.Lit_Chars val:Ubuntu span_id:96))} {(/etc/issue)})
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cfgdir)
                  op: assign_op.Equal
                  rhs: {(/etc/network)}
                  spids: [104]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:distro)
                  op: assign_op.Equal
                  rhs: {(ubuntu)}
                  spids: [108]
                )
              ]
            )
          ]
          spids: [89 101]
        )
        (if_arm
          cond: [(C {(grep)} {(-q)} {(SQ (Token id:Id.Lit_Chars val:SUSE span_id:118))} {(/etc/issue)})]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:cfgdir)
                  op: assign_op.Equal
                  rhs: {(/etc/sysconfig/network)}
                  spids: [126]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:distro)
                  op: assign_op.Equal
                  rhs: {(suse)}
                  spids: [130]
                )
              ]
            )
          ]
          spids: [111 123]
        )
      ]
      else_action: [
        (C {(echo)} {(DQ ('Unsupported Distro'))})
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:143)
          arg_word: {(1)}
        )
      ]
    )
    (C {(echo)} {(Detected)} {(Distro) (Id.Lit_Other ':')} 
      {($ Id.VSub_DollarName '$distro') (Id.Lit_Comma ',')} {(or)} {(compatible)}
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:list_eth)
          op: assign_op.Equal
          rhs: 
            {
              (sh_array_literal
                left: (Token id:Id.Op_LParen val:'(' span_id:169)
                words: [
                  {
                    (command_sub
                      left_token: (Token id:Id.Left_Backtick val:'`' span_id:170)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(cd)} {($ Id.VSub_DollarName '$sysdir')})
                                (command.Pipeline
                                  children: [
                                    (C {(ls)} {(-d)} {(Id.Lit_Star '*') (/)})
                                    (C {(cut)} {(-d/)} {(-f1)})
                                    (C {(grep)} {(-v)} {(bond)})
                                  ]
                                  negated: F
                                )
                              ]
                            )
                          ]
                        )
                    )
                  }
                ]
              )
            }
          spids: [168]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:eth_cnt)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:list_eth span_id:207)
                prefix_op: (Id.VSub_Pound)
                bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At)
              )
            }
          spids: [204]
        )
      ]
    )
    (C {(echo)} {(List)} {(of)} {(net)} {(devices) (Id.Lit_Other ':')})
    (command.ForExpr
      init: 
        (arith_expr.BinaryAssign
          op_id: Id.Arith_Equal
          left: (sh_lhs_expr.Name name:i)
          right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
        )
      cond: 
        (arith_expr.Binary
          op_id: Id.Arith_Less
          left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:i span_id:238))
          right: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$eth_cnt')})
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i))
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: 
                    (sh_lhs_expr.IndexedName
                      name: list_mac
                      index: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_Backtick val:'`' span_id:257)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(cat)} 
                                {($ Id.VSub_DollarName '$sysdir') (/) 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:list_eth span_id:265)
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                      )
                                  ) (/address)
                                }
                              )
                            ]
                          )
                      )
                    }
                  spids: [254]
                )
              ]
            )
            (C {(echo)} 
              {
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:list_eth span_id:279)
                  bracket_op: 
                    (bracket_op.ArrayIndex
                      expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                    )
                ) (Id.Lit_Comma ',')
              } 
              {
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:list_mac span_id:287)
                  bracket_op: 
                    (bracket_op.ArrayIndex
                      expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                    )
                )
              }
            )
          ]
        )
    )
    (command.ForExpr
      init: 
        (arith_expr.BinaryAssign
          op_id: Id.Arith_Equal
          left: (sh_lhs_expr.Name name:i)
          right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
        )
      cond: 
        (arith_expr.Binary
          op_id: Id.Arith_Less
          left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:i span_id:308))
          right: 
            (arith_expr.Binary
              op_id: Id.Arith_Minus
              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$eth_cnt')})
              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
            )
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i))
      body: 
        (command.DoGroup
          children: [
            (command.ForExpr
              init: 
                (arith_expr.BinaryAssign
                  op_id: Id.Arith_Equal
                  left: (sh_lhs_expr.Name name:j)
                  right: 
                    (arith_expr.Binary
                      op_id: Id.Arith_Plus
                      left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:i span_id:332))
                      right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                    )
                )
              cond: 
                (arith_expr.Binary
                  op_id: Id.Arith_Less
                  left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:j span_id:337))
                  right: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$eth_cnt')})
                )
              update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:j))
              body: 
                (command.DoGroup
                  children: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(Id.Lit_LBracket '[')} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:list_mac span_id:360)
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                      )
                                  )
                                )
                              } {(Id.Lit_Equals '=')} 
                              {
                                (DQ 
                                  (braced_var_sub
                                    token: (Token id:Id.VSub_Name val:list_mac span_id:371)
                                    bracket_op: 
                                      (bracket_op.ArrayIndex
                                        expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$j')})
                                      )
                                  )
                                )
                              } {(Id.Lit_RBracket ']')}
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: 
                                    (sh_lhs_expr.IndexedName
                                      name: list_match
                                      index: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:list_eth span_id:388)
                                        bracket_op: 
                                          (bracket_op.ArrayIndex
                                            expr: 
                                              (arith_expr.ArithWord
                                                w: {($ Id.VSub_DollarName '$j')}
                                              )
                                          )
                                      )
                                    }
                                  spids: [384]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:397)
                            )
                          ]
                          spids: [354 381]
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: create_eth_cfg_redhat
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'fn=') ($ Id.VSub_DollarName '$cfgdir') (/ifcfg-) 
                ($ Id.VSub_Number '$1')
              }
            )
            (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$fn')})
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'DEVICE=') ($ Id.VSub_Number '$1')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:436)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'TYPE=') (Ethernet)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:445)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BOOTPROTO=') (none)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:454)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'ONBOOT=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:463)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'NM_CONTROLLED=') (no)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:472)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'PEERDNS=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:481)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'IPV6INIT=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:490)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'MASTER=') ($ Id.VSub_Number '$2')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:499)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'SLAVE=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:508)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_eth_cfg_pri_redhat
      body: 
        (command.BraceGroup
          children: [(C {(create_eth_cfg_redhat)} {($ Id.VSub_Number '$1')} {($ Id.VSub_Number '$2')})]
        )
    )
    (command.ShFunction
      name: create_bond_cfg_redhat
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'fn=') ($ Id.VSub_DollarName '$cfgdir') (/ifcfg-) 
                ($ Id.VSub_Number '$1')
              }
            )
            (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$fn')})
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'DEVICE=') ($ Id.VSub_Number '$1')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:558)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'TYPE=') (Bond)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:567)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BOOTPROTO=') (dhcp)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:576)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'ONBOOT=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:585)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'NM_CONTROLLED=') (no)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:594)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'PEERDNS=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:603)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'IPV6INIT=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:612)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BONDING_MASTER=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:621)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [
                {(echo)}
                {(Id.Lit_VarLike 'BONDING_OPTS=') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:628)
                  ) (Id.Lit_VarLike 'mode=') (active-backup)
                }
                {(Id.Lit_VarLike 'miimon=') (100)}
                {(Id.Lit_VarLike 'primary=') ($ Id.VSub_Number '$2') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:637)
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:639)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_eth_cfg_ubuntu
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'fn=') ($ Id.VSub_DollarName '$cfgdir') (/interfaces)})
            (command.Simple
              words: [
                {(echo)}
                {
                  (single_quoted
                    left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:662)
                    tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:663)]
                  ) (auto)
                }
                {($ Id.VSub_Number '$1')}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:669)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(iface)} {($ Id.VSub_Number '$1')} {(inet)} {(manual)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:683)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(bond-master)} {($ Id.VSub_Number '$2')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:693)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_eth_cfg_pri_ubuntu
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'fn=') ($ Id.VSub_DollarName '$cfgdir') (/interfaces)})
            (C {(create_eth_cfg_ubuntu)} {($ Id.VSub_Number '$1')} {($ Id.VSub_Number '$2')})
            (command.Simple
              words: [{(echo)} {(bond-primary)} {($ Id.VSub_Number '$1')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:727)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_bond_cfg_ubuntu
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'fn=') ($ Id.VSub_DollarName '$cfgdir') (/interfaces)})
            (command.Simple
              words: [
                {(echo)}
                {
                  (single_quoted
                    left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:750)
                    tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:751)]
                  ) (auto)
                }
                {($ Id.VSub_Number '$1')}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:757)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(iface)} {($ Id.VSub_Number '$1')} {(inet)} {(dhcp)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:771)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(bond-mode)} {(active-backup)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:781)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(bond-miimon)} {(100)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:791)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(bond-slaves)} {(none)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:801)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_eth_cfg_suse
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'fn=') ($ Id.VSub_DollarName '$cfgdir') (/ifcfg-) 
                ($ Id.VSub_Number '$1')
              }
            )
            (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$fn')})
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BOOTPROTO=') (none)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:835)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'STARTMODE=') (auto)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:844)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_eth_cfg_pri_suse
      body: (command.BraceGroup children:[(C {(create_eth_cfg_suse)} {($ Id.VSub_Number '$1')})])
    )
    (command.ShFunction
      name: create_bond_cfg_suse
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} 
              {(Id.Lit_VarLike 'fn=') ($ Id.VSub_DollarName '$cfgdir') (/ifcfg-) 
                ($ Id.VSub_Number '$1')
              }
            )
            (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$fn')})
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BOOTPROTO=') (dhcp)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:892)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'STARTMODE=') (auto)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:901)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BONDING_MASTER=') (yes)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:910)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BONDING_SLAVE_0=') ($ Id.VSub_Number '$2')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:919)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(Id.Lit_VarLike 'BONDING_SLAVE_1=') ($ Id.VSub_Number '$3')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:928)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
            (command.Simple
              words: [
                {(echo)}
                {(Id.Lit_VarLike 'BONDING_MODULE_OPTS=') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:"\\'" span_id:935)
                  ) (Id.Lit_VarLike 'mode=') (active-backup)
                }
                {(Id.Lit_VarLike 'miimon=') (100)}
                {(Id.Lit_VarLike 'primary=') ($ Id.VSub_Number '$2') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:"\\'" span_id:944)
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:946)
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$fn')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_bond
      body: 
        (command.BraceGroup
          children: [
            (C {(local)} {(Id.Lit_VarLike 'bondname=') (bond) ($ Id.VSub_DollarName '$bondcnt')})
            (C {(local)} {(primary)})
            (C {(local)} {(secondary)})
            (C {(local)} 
              {(Id.Lit_VarLike 'class_id1=') 
                (command_sub
                  left_token: (Token id:Id.Left_Backtick val:'`' span_id:980)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Simple
                          words: [
                            {(cat)}
                            {($ Id.VSub_DollarName '$sysdir') (/) ($ Id.VSub_Number '$1') 
                              (/device/class_id)
                            }
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'2>' span_id:990)
                              fd: 2
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      ]
                    )
                )
              }
            )
            (C {(local)} 
              {(Id.Lit_VarLike 'class_id2=') 
                (command_sub
                  left_token: (Token id:Id.Left_Backtick val:'`' span_id:998)
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.Simple
                          words: [
                            {(cat)}
                            {($ Id.VSub_DollarName '$sysdir') (/) ($ Id.VSub_Number '$2') 
                              (/device/class_id)
                            }
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'2>' span_id:1008)
                              fd: 2
                              arg_word: {(/dev/null)}
                            )
                          ]
                        )
                      ]
                    )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$class_id1'))} 
                      {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$netvsc_cls'))} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:primary)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$2')}
                          spids: [1034]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:secondary)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1038]
                        )
                      ]
                    )
                  ]
                  spids: [1014 1031]
                )
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$class_id2'))} 
                      {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$netvsc_cls'))} {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:primary)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1062]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:secondary)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$2')}
                          spids: [1066]
                        )
                      ]
                    )
                  ]
                  spids: [1042 1059]
                )
              ]
              else_action: [
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:1073)
                  arg_word: {(0)}
                )
              ]
            )
            (C {(echo)} 
              {
                (single_quoted
                  left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:1084)
                  tokens: [
                    (Token id:Id.Char_OneChar val:'\\n' span_id:1085)
                    (Token id:Id.Char_Literals val:'Bond name:' span_id:1086)
                  ]
                )
              } {($ Id.VSub_DollarName '$bondname')}
            )
            (C {(echo)} {(configuring)} {($ Id.VSub_DollarName '$primary')})
            (C {(create_eth_cfg_pri_) ($ Id.VSub_DollarName '$distro')} 
              {($ Id.VSub_DollarName '$primary')} {($ Id.VSub_DollarName '$bondname')}
            )
            (C {(echo)} {(configuring)} {($ Id.VSub_DollarName '$secondary')})
            (C {(create_eth_cfg_) ($ Id.VSub_DollarName '$distro')} 
              {($ Id.VSub_DollarName '$secondary')} {($ Id.VSub_DollarName '$bondname')}
            )
            (C {(echo)} {(creating) (Id.Lit_Other ':')} {($ Id.VSub_DollarName '$bondname')} {(with)} 
              {(primary)} {(slave) (Id.Lit_Other ':')} {($ Id.VSub_DollarName '$primary')}
            )
            (C {(create_bond_cfg_) ($ Id.VSub_DollarName '$distro')} 
              {($ Id.VSub_DollarName '$bondname')} {($ Id.VSub_DollarName '$primary')} {($ Id.VSub_DollarName '$secondary')}
            )
            (C {(let)} {(Id.Lit_VarLike 'bondcnt=') (bondcnt) (Id.Lit_Other '+') (1)})
          ]
        )
    )
    (command.ForExpr
      init: 
        (arith_expr.BinaryAssign
          op_id: Id.Arith_Equal
          left: (sh_lhs_expr.Name name:i)
          right: (arith_expr.ArithWord w:{(Id.Lit_Digits 0)})
        )
      cond: 
        (arith_expr.Binary
          op_id: Id.Arith_Less
          left: (arith_expr.VarRef token:(Token id:Id.Lit_ArithVarLike val:i span_id:1172))
          right: 
            (arith_expr.Binary
              op_id: Id.Arith_Minus
              left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$eth_cnt')})
              right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
            )
        )
      update: (arith_expr.UnaryAssign op_id:Id.Node_PostDPlus child:(sh_lhs_expr.Name name:i))
      body: 
        (command.DoGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(-n)} 
                      {
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:list_match span_id:1198)
                            bracket_op: 
                              (bracket_op.ArrayIndex
                                expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                              )
                          )
                        )
                      } {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (C {(create_bond)} 
                      {
                        (braced_var_sub
                          token: (Token id:Id.VSub_Name val:list_eth span_id:1214)
                          bracket_op: 
                            (bracket_op.ArrayIndex
                              expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                            )
                        )
                      } 
                      {
                        (braced_var_sub
                          token: (Token id:Id.VSub_Name val:list_match span_id:1221)
                          bracket_op: 
                            (bracket_op.ArrayIndex
                              expr: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$i')})
                            )
                        )
                      }
                    )
                  ]
                  spids: [1190 1208]
                )
              ]
            )
          ]
        )
    )
  ]
)