@@ -205,30 +205,32 @@ func (p *cniPlugin) CmdAdd(args *skel.CmdArgs) error {
205
205
if err != nil {
206
206
return fmt .Errorf ("failed to configure macvlan device: %v" , err )
207
207
}
208
+
209
+ var dsts []* net.IPNet
208
210
for _ , addr := range addrs {
209
- route := & netlink.Route {
210
- Dst : & net.IPNet {
211
- IP : addr .IP ,
212
- Mask : net .CIDRMask (32 , 32 ),
213
- },
214
- Gw : defaultGW ,
215
- }
216
- if err := netlink .RouteAdd (route ); err != nil {
217
- return fmt .Errorf ("failed to add route to node IP: %v" , err )
218
- }
211
+ dsts = append (dsts , & net.IPNet {IP : addr .IP , Mask : net .CIDRMask (32 , 32 )})
219
212
}
220
213
221
- // Add a route to service network via SDN
222
214
_ , serviceIPNet , err := net .ParseCIDR (config .ServiceNetworkCIDR )
223
215
if err != nil {
224
216
return fmt .Errorf ("failed to parse ServiceNetworkCIDR: %v" , err )
225
217
}
226
- route := & netlink.Route {
227
- Dst : serviceIPNet ,
228
- Gw : defaultGW ,
218
+ dsts = append (dsts , serviceIPNet )
219
+
220
+ dnsIP := net .ParseIP (config .DNSIP )
221
+ if dnsIP == nil {
222
+ return fmt .Errorf ("failed to parse dns IP: %v" , err )
229
223
}
230
- if err := netlink .RouteAdd (route ); err != nil {
231
- return fmt .Errorf ("failed to add route to service network: %v" , err )
224
+ dsts = append (dsts , & net.IPNet {IP : dnsIP , Mask : net .CIDRMask (32 , 32 )})
225
+
226
+ for _ , dst := range dsts {
227
+ route := & netlink.Route {
228
+ Dst : dst ,
229
+ Gw : defaultGW ,
230
+ }
231
+ if err := netlink .RouteAdd (route ); err != nil {
232
+ return fmt .Errorf ("failed to add route to dst: %v via SDN: %v" , dst , err )
233
+ }
232
234
}
233
235
}
234
236
0 commit comments