@@ -24,7 +24,7 @@ import (
2424 "yunion.io/x/onecloud/pkg/util/stringutils2"
2525)
2626
27- func nicDescToNetworkManager (nicDesc * types.SServerNic , mainIp string , mainIp6 string ) string {
27+ func nicDescToNetworkManager (nicDesc * types.SServerNic , mainIp string , mainIp6 string , nicCnt int ) string {
2828 var profile strings.Builder
2929
3030 profile .WriteString ("[connection]\n " )
@@ -57,12 +57,6 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
5757
5858 if len (nicDesc .Mac ) > 0 && nicDesc .NicType != api .NIC_TYPE_INFINIBAND {
5959 profile .WriteString ("[ethernet]\n " )
60- if len (nicDesc .TeamingSlaves ) == 0 {
61- // only real physical nic can set HWADDR
62- // cmds.WriteString("HWADDR=")
63- // cmds.WriteString(nicDesc.Mac)
64- // cmds.WriteString("\n")
65- }
6660 profile .WriteString (fmt .Sprintf ("mac-address=%s\n " , nicDesc .Mac ))
6761 if nicDesc .Mtu > 0 {
6862 profile .WriteString (fmt .Sprintf ("mtu=%d\n " , nicDesc .Mtu ))
@@ -83,6 +77,10 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
8377 profile .WriteString (fmt .Sprintf ("address1=%s/32\n " , netutils2 .PSEUDO_VIP ))
8478 profile .WriteString ("\n " )
8579 } else if nicDesc .Manual {
80+ routes4 := make ([]netutils2.SRouteInfo , 0 )
81+ routes6 := make ([]netutils2.SRouteInfo , 0 )
82+ routes4 , routes6 = netutils2 .AddNicRoutes (routes4 , routes6 , nicDesc , mainIp , mainIp6 , nicCnt )
83+
8684 // manual interface
8785 if len (nicDesc .Ip ) > 0 {
8886 profile .WriteString ("[ipv4]\n " )
@@ -91,10 +89,20 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
9189 if len (nicDesc .Gateway ) > 0 && nicDesc .Ip == mainIp {
9290 profile .WriteString (fmt .Sprintf ("gateway=%s\n " , nicDesc .Gateway ))
9391 }
92+ // dns
9493 dnslist , _ := netutils2 .GetNicDns (nicDesc )
9594 if len (dnslist ) > 0 {
9695 profile .WriteString (fmt .Sprintf ("dns=%s\n " , strings .Join (dnslist , "," )))
9796 }
97+ // static routes
98+ for i := range routes4 {
99+ gwstr := routes4 [i ].Gateway .String ()
100+ if gwstr == "0.0.0.0" {
101+ profile .WriteString (fmt .Sprintf ("route%d=%s\n " , i + 1 , routes4 [i ].SPrefixInfo .String ()))
102+ } else {
103+ profile .WriteString (fmt .Sprintf ("route%d=%s,%s\n " , i + 1 , routes4 [i ].SPrefixInfo .String (), gwstr ))
104+ }
105+ }
98106 profile .WriteString ("\n " )
99107 }
100108 if len (nicDesc .Ip6 ) > 0 {
@@ -104,10 +112,20 @@ func nicDescToNetworkManager(nicDesc *types.SServerNic, mainIp string, mainIp6 s
104112 if len (nicDesc .Gateway6 ) > 0 && nicDesc .Ip6 == mainIp6 {
105113 profile .WriteString (fmt .Sprintf ("gateway=%s\n " , nicDesc .Gateway6 ))
106114 }
115+ // dns
107116 _ , dns6list := netutils2 .GetNicDns (nicDesc )
108117 if len (dns6list ) > 0 {
109118 profile .WriteString (fmt .Sprintf ("dns=%s\n " , strings .Join (dns6list , "," )))
110119 }
120+ // static routes
121+ for i := range routes6 {
122+ gwstr := routes6 [i ].Gateway .String ()
123+ if gwstr == "::" {
124+ profile .WriteString (fmt .Sprintf ("route%d=%s\n " , i + 1 , routes6 [i ].SPrefixInfo .String ()))
125+ } else {
126+ profile .WriteString (fmt .Sprintf ("route%d=%s,%s\n " , i + 1 , routes6 [i ].SPrefixInfo .String (), gwstr ))
127+ }
128+ }
111129 profile .WriteString ("\n " )
112130 }
113131 } else {
0 commit comments