@@ -59,32 +59,29 @@ type route netlink.Route
5959// NewNetworkImpl creates a new container network.
6060func (nm * networkManager ) newNetworkImpl (nwInfo * NetworkInfo , extIf * externalInterface ) (* network , error ) {
6161 // Connect the external interface.
62- var vlanid int
62+ var (
63+ vlanid int
64+ ifName string
65+ )
6366 opt , _ := nwInfo .Options [genericData ].(map [string ]interface {})
6467 log .Printf ("opt %+v options %+v" , opt , nwInfo .Options )
6568
6669 switch nwInfo .Mode {
6770 case opModeTunnel :
68- err := nm .handleCommonOptions (extIf .Name , nwInfo )
69- if err != nil {
70- log .Printf ("tunnel handleCommonOptions failed with error %s" , err .Error ())
71- }
7271 fallthrough
7372 case opModeBridge :
7473 log .Printf ("create bridge" )
74+ ifName = extIf .BridgeName
7575 if err := nm .connectExternalInterface (extIf , nwInfo ); err != nil {
7676 return nil , err
7777 }
7878
7979 if opt != nil && opt [VlanIDKey ] != nil {
8080 vlanid , _ = strconv .Atoi (opt [VlanIDKey ].(string ))
8181 }
82- err := nm .handleCommonOptions (extIf .BridgeName , nwInfo )
83- if err != nil {
84- log .Printf ("bridge handleCommonOptions failed with error %s" , err .Error ())
85- }
8682 case opModeTransparent :
8783 log .Printf ("Transparent mode" )
84+ ifName = extIf .Name
8885 if nwInfo .IPV6Mode != "" {
8986 nu := networkutils .NewNetworkUtils (nm .netlink , nm .plClient )
9087 if err := nu .EnableIPV6Forwarding (); err != nil {
@@ -95,6 +92,12 @@ func (nm *networkManager) newNetworkImpl(nwInfo *NetworkInfo, extIf *externalInt
9592 return nil , errNetworkModeInvalid
9693 }
9794
95+ err := nm .handleCommonOptions (ifName , nwInfo )
96+ if err != nil {
97+ log .Printf ("handleCommonOptions failed with error %s" , err .Error ())
98+ return nil , err
99+ }
100+
98101 // Create the network object.
99102 nw := & network {
100103 Id : nwInfo .Id ,
@@ -109,10 +112,10 @@ func (nm *networkManager) newNetworkImpl(nwInfo *NetworkInfo, extIf *externalInt
109112 return nw , nil
110113}
111114
112- func (nm * networkManager ) handleCommonOptions (ifname string , nwInfo * NetworkInfo ) error {
115+ func (nm * networkManager ) handleCommonOptions (ifName string , nwInfo * NetworkInfo ) error {
113116 var err error
114117 if routes , exists := nwInfo .Options [RoutesKey ]; exists {
115- err = nm .addBridgeRoutes ( ifname , routes .([]RouteInfo ))
118+ err = addRoutes ( nm .netlink , nm . netio , ifName , routes .([]RouteInfo ))
116119 if err != nil {
117120 return err
118121 }
@@ -571,34 +574,6 @@ func (*networkManager) addToIptables(cmds []iptables.IPTableEntry) error {
571574 return nil
572575}
573576
574- func (nm * networkManager ) addBridgeRoutes (bridgeName string , routes []RouteInfo ) error {
575- log .Printf ("Adding routes..." )
576- for _ , route := range routes {
577- route .DevName = bridgeName
578- devIf , _ := net .InterfaceByName (route .DevName )
579- ifIndex := devIf .Index
580- gwfamily := netlink .GetIPAddressFamily (route .Gw )
581-
582- nlRoute := & netlink.Route {
583- Family : gwfamily ,
584- Dst : & route .Dst ,
585- Gw : route .Gw ,
586- LinkIndex : ifIndex ,
587- }
588-
589- if err := nm .netlink .AddIPRoute (nlRoute ); err != nil {
590- if ! strings .Contains (strings .ToLower (err .Error ()), "file exists" ) {
591- return fmt .Errorf ("Failed to add %+v to host interface with error: %v" , nlRoute , err )
592- }
593- log .Printf ("[cni-net] route already exists: dst %+v, gw %+v, interfaceName %v" , nlRoute .Dst , nlRoute .Gw , route .DevName )
594- }
595-
596- log .Printf ("[cni-net] Added route %+v" , route )
597- }
598-
599- return nil
600- }
601-
602577// Add ipv6 nat gateway IP on bridge
603578func (nm * networkManager ) addIpv6NatGateway (nwInfo * NetworkInfo ) error {
604579 log .Printf ("[net] Adding ipv6 nat gateway on azure bridge" )
0 commit comments