IP转换时,修改IP类型为46或者64时的源目的IP缺省值,46表示源ip为ipv4,目的ip为ipv6,64表示源ip为ipv6,目的ip为ipv4。

Signed-off-by: zhangwei <zhangwei@intranet.com>
This commit is contained in:
zhangwei
2018-07-03 09:47:32 +08:00
parent d195aa0ea0
commit b34139c713

View File

@@ -388,21 +388,21 @@ public abstract class BaseService {
public static IpCfg ipConvert(IpCfg dstIp,BaseIpCfg srcIp){ public static IpCfg ipConvert(IpCfg dstIp,BaseIpCfg srcIp){
if(srcIp.getSrcIpAddress()!=null){ if(srcIp.getSrcIpAddress()!=null){
if(srcIp.getSrcIpAddress().indexOf("/")!=-1){ if(srcIp.getSrcIpAddress().indexOf("/")!=-1){
if(srcIp.getIpType()==4 || srcIp.getIpType()==46){ if(srcIp.getIpType()==4 || srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]); Integer srcMaskNum = Integer.parseInt(srcIp.getSrcIpAddress().split("/")[1]);
dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum)); dstIp.setSrcIpMask(IpUtil.convertMask(srcMaskNum));
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress()); IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getSrcIpAddress());
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]); dstIp.setSrcIp(srcIp.getSrcIpAddress().split("/")[0]);
dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString()); dstIp.setSrcIpMask(strangeNetwork.getNetmask().asAddress().toString());
} }
}else if(srcIp.getSrcIpAddress().indexOf("-")!=-1){ }else if(srcIp.getSrcIpAddress().indexOf("-")!=-1){
if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ if(srcIp.getIpType()==4|| srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
dstIp.setSrcIp(srcIp.getSrcIpAddress().split("-")[0]); dstIp.setSrcIp(srcIp.getSrcIpAddress().split("-")[0]);
dstIp.setSrcIpMask(IpUtil.getMask(srcIp.getSrcIpAddress().split("-")[0], srcIp.getSrcIpAddress().split("-")[1])); dstIp.setSrcIpMask(IpUtil.getMask(srcIp.getSrcIpAddress().split("-")[0], srcIp.getSrcIpAddress().split("-")[1]));
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
IPv6Address address1 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[0]); IPv6Address address1 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[0]);
IPv6Address address2 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[1]); IPv6Address address2 = IPv6Address.fromString(srcIp.getSrcIpAddress().split("-")[1]);
IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2); IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2);
@@ -411,41 +411,41 @@ public abstract class BaseService {
} }
}else{ }else{
if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ if(srcIp.getIpType()==4|| srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("0.0.0.0"); dstIp.setSrcIpMask("0.0.0.0");
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("::"); dstIp.setSrcIpMask("::");
} }
} }
}else{ }else{
if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ if(srcIp.getIpType()==4|| srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("0.0.0.0"); dstIp.setSrcIpMask("0.0.0.0");
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
dstIp.setSrcIp(srcIp.getSrcIpAddress()); dstIp.setSrcIp(srcIp.getSrcIpAddress());
dstIp.setSrcIpMask("::"); dstIp.setSrcIpMask("::");
} }
} }
if(srcIp.getDestIpAddress()!=null){ if(srcIp.getDestIpAddress()!=null){
if(srcIp.getDestIpAddress().indexOf("/")!=-1){ if(srcIp.getDestIpAddress().indexOf("/")!=-1){
if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ if(srcIp.getIpType()==4|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
Integer dstMaskNum = Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]); Integer dstMaskNum = Integer.parseInt(srcIp.getDestIpAddress().split("/")[1]);
dstIp.setDstIpMask(IpUtil.convertMask(dstMaskNum)); dstIp.setDstIpMask(IpUtil.convertMask(dstMaskNum));
dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress()); IPv6Network strangeNetwork = IPv6Network.fromString(srcIp.getDestIpAddress());
dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]); dstIp.setDstIp(srcIp.getDestIpAddress().split("/")[0]);
dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString()); dstIp.setDstIpMask(strangeNetwork.getNetmask().asAddress().toString());
} }
}else if(srcIp.getDestIpAddress().indexOf("-")!=-1){ }else if(srcIp.getDestIpAddress().indexOf("-")!=-1){
if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ if(srcIp.getIpType()==4|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
dstIp.setDstIp(srcIp.getDestIpAddress().split("-")[0]); dstIp.setDstIp(srcIp.getDestIpAddress().split("-")[0]);
dstIp.setDstIpMask(IpUtil.getMask(srcIp.getDestIpAddress().split("-")[0], srcIp.getDestIpAddress().split("-")[1])); dstIp.setDstIpMask(IpUtil.getMask(srcIp.getDestIpAddress().split("-")[0], srcIp.getDestIpAddress().split("-")[1]));
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
IPv6Address address1 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[0]); IPv6Address address1 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[0]);
IPv6Address address2 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[1]); IPv6Address address2 = IPv6Address.fromString(srcIp.getDestIpAddress().split("-")[1]);
IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2); IPv6Network network = IPv6Network.fromTwoAddresses(address1,address2);
@@ -454,20 +454,20 @@ public abstract class BaseService {
} }
}else{ }else{
if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ if(srcIp.getIpType()==4|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("0.0.0.0"); dstIp.setDstIpMask("0.0.0.0");
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("::"); dstIp.setDstIpMask("::");
} }
} }
}else{ }else{
if(srcIp.getIpType()==4|| srcIp.getIpType()==46){ if(srcIp.getIpType()==4|| srcIp.getIpType()==64){//64表示源ip为ipv6目的ip为ipv4
dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("0.0.0.0"); dstIp.setDstIpMask("0.0.0.0");
}else if(srcIp.getIpType()==6|| srcIp.getIpType()==64){ }else if(srcIp.getIpType()==6|| srcIp.getIpType()==46){//46表示源ip为ipv4目的ip为ipv6
dstIp.setDstIp(srcIp.getDestIpAddress()); dstIp.setDstIp(srcIp.getDestIpAddress());
dstIp.setDstIpMask("::"); dstIp.setDstIpMask("::");
} }