@@ -2674,36 +2674,40 @@ private void addRouteToInternalIpOrCidr(String localgw, String eth1ip, String et
26742674 s_logger .debug ("addRouteToInternalIp: destIp is null" );
26752675 return ;
26762676 }
2677- if (!NetUtils .isValidIp4 (destIpOrCidr ) && !NetUtils .isValidIp4Cidr (destIpOrCidr )) {
2678- s_logger .warn (" destIp is not a valid ip address or cidr destIp=" + destIpOrCidr );
2679- return ;
2680- }
2681- boolean inSameSubnet = false ;
2682- if (NetUtils .isValidIp4 (destIpOrCidr )) {
2683- if (eth1ip != null && eth1mask != null ) {
2684- inSameSubnet = NetUtils .sameSubnet (eth1ip , destIpOrCidr , eth1mask );
2677+ List <String > ips = new ArrayList <>();
2678+ ips .addAll (Arrays .asList (destIpOrCidr .split ("," )));
2679+ for (String ip : ips ) {
2680+ if (!NetUtils .isValidIp4 (ip ) && !NetUtils .isValidIp4Cidr (ip )) {
2681+ s_logger .warn (" destIp is not a valid ip address or cidr destIp=" + ip );
2682+ return ;
2683+ }
2684+ boolean inSameSubnet = false ;
2685+ if (NetUtils .isValidIp4 (ip )) {
2686+ if (eth1ip != null && eth1mask != null ) {
2687+ inSameSubnet = NetUtils .sameSubnet (eth1ip , ip , eth1mask );
2688+ } else {
2689+ s_logger .warn ("addRouteToInternalIp: unable to determine same subnet: _eth1ip=" + eth1ip + ", dest ip=" + ip + ", _eth1mask=" + eth1mask );
2690+ }
26852691 } else {
2686- s_logger .warn ("addRouteToInternalIp: unable to determine same subnet: _eth1ip=" + eth1ip + ", dest ip=" + destIpOrCidr + ", _eth1mask=" + eth1mask );
2692+ inSameSubnet = NetUtils .isNetworkAWithinNetworkB (ip , NetUtils .ipAndNetMaskToCidr (eth1ip , eth1mask ));
2693+ }
2694+ if (inSameSubnet ) {
2695+ s_logger .info ("addRouteToInternalIp: dest ip " + ip + " is in the same subnet as eth1 ip " + eth1ip );
2696+ return ;
2697+ }
2698+ Script command = new Script ("/bin/bash" , s_logger );
2699+ command .add ("-c" );
2700+ command .add ("ip route delete " + ip );
2701+ command .execute ();
2702+ command = new Script ("/bin/bash" , s_logger );
2703+ command .add ("-c" );
2704+ command .add ("ip route add " + ip + " via " + localgw );
2705+ String result = command .execute ();
2706+ if (result != null ) {
2707+ s_logger .warn ("Error in configuring route to internal ip err=" + result );
2708+ } else {
2709+ s_logger .info ("addRouteToInternalIp: added route to internal ip=" + ip + " via " + localgw );
26872710 }
2688- } else {
2689- inSameSubnet = NetUtils .isNetworkAWithinNetworkB (destIpOrCidr , NetUtils .ipAndNetMaskToCidr (eth1ip , eth1mask ));
2690- }
2691- if (inSameSubnet ) {
2692- s_logger .debug ("addRouteToInternalIp: dest ip " + destIpOrCidr + " is in the same subnet as eth1 ip " + eth1ip );
2693- return ;
2694- }
2695- Script command = new Script ("/bin/bash" , s_logger );
2696- command .add ("-c" );
2697- command .add ("ip route delete " + destIpOrCidr );
2698- command .execute ();
2699- command = new Script ("/bin/bash" , s_logger );
2700- command .add ("-c" );
2701- command .add ("ip route add " + destIpOrCidr + " via " + localgw );
2702- String result = command .execute ();
2703- if (result != null ) {
2704- s_logger .warn ("Error in configuring route to internal ip err=" + result );
2705- } else {
2706- s_logger .debug ("addRouteToInternalIp: added route to internal ip=" + destIpOrCidr + " via " + localgw );
27072711 }
27082712 }
27092713
0 commit comments