NOC:ctwug lobridge fixer

From CTWUG Wiki
Jump to: navigation, search

Purpose

  • renames bridges with the name 'iobridge' to 'lobridge'
  • adds a lobridge if it isn't present
  • if no ip address is assigned to lobridge, chooses an OSPF ip from the backbone network and adds that to lobridge

Dependencies

None

Script

:foreach iobridge in=[/interface bridge find name=iobridge] do={
  /interface bridge set $iobridge name=lobridge;
} 

:if ([:len [/interface bridge find name=lobridge]]=0) do={
  log info "creating lobridge"; 

  /interface bridge add name=lobridge; 
}

:if ([:len [/ip address find interface=lobridge]]=0) do={ 

  :local backbonearea [/routing ospf area get [/routing ospf area find area-id=0.0.0.0] name] 

  log info ("checking backbonearea (".$backbonearea.")");

  :local ospfip ""
  :foreach backbone in=[/routing ospf network find area=$backbonearea] do={
    :local bbnet [/routing ospf network get $backbone network]
    log info ("checking bbnet (".$bbnet.")");

    :for i from=0 to=([:len $bbnet] - 1) do={ 
      :if ( [:pick $bbnet $i] = "/") do={ 
        :local tmp [:pick $bbnet 0 $i]
        :set bbnet $tmp;
      } 
    }

    log info ("checking bbnet (".$bbnet.")");
    :set ospfip [/ip address get  [/ip address find network=$bbnet] address]
  }

  :for i from=0 to=([:len $ospfip] - 1) do={ 
      :if ( [:pick $ospfip $i] = "/") do={ 
        :local tmp [:pick $ospfip 0 $i]
        :set ospfip $tmp;
      } 
    }

  log info ("current ospf ip (".$ospfip.")");
  
  /ip address add address=($ospfip."/32") interface=lobridge
}