Committed by
Gerrit Code Review
[ONOS-5030] Fix to gateway ip address in host annotation refers appropriate ip address
- Fix to gateway ip address in host annotation refers right ip address, not host ip address Change-Id: Ia07ed828d2f37e623dcca4ad204bfbaf4db2a45a
Showing
2 changed files
with
16 additions
and
13 deletions
| ... | @@ -191,8 +191,10 @@ public class OpenstackIcmpHandler { | ... | @@ -191,8 +191,10 @@ public class OpenstackIcmpHandler { |
| 191 | icmpReq.setChecksum((short) 0); | 191 | icmpReq.setChecksum((short) 0); |
| 192 | icmpReq.setIcmpType(ICMP.TYPE_ECHO_REPLY).resetChecksum(); | 192 | icmpReq.setIcmpType(ICMP.TYPE_ECHO_REPLY).resetChecksum(); |
| 193 | 193 | ||
| 194 | + int destinationAddress = ipPacket.getSourceAddress(); | ||
| 195 | + | ||
| 194 | ipPacket.setSourceAddress(ipPacket.getDestinationAddress()) | 196 | ipPacket.setSourceAddress(ipPacket.getDestinationAddress()) |
| 195 | - .setDestinationAddress(ipPacket.getSourceAddress()) | 197 | + .setDestinationAddress(destinationAddress) |
| 196 | .resetChecksum(); | 198 | .resetChecksum(); |
| 197 | 199 | ||
| 198 | ipPacket.setPayload(icmpReq); | 200 | ipPacket.setPayload(icmpReq); |
| ... | @@ -200,7 +202,7 @@ public class OpenstackIcmpHandler { | ... | @@ -200,7 +202,7 @@ public class OpenstackIcmpHandler { |
| 200 | icmpReply.setEtherType(Ethernet.TYPE_IPV4) | 202 | icmpReply.setEtherType(Ethernet.TYPE_IPV4) |
| 201 | .setSourceMACAddress(Constants.DEFAULT_GATEWAY_MAC) | 203 | .setSourceMACAddress(Constants.DEFAULT_GATEWAY_MAC) |
| 202 | .setDestinationMACAddress(reqHost.mac()) | 204 | .setDestinationMACAddress(reqHost.mac()) |
| 203 | - .setPayload(icmpReq); | 205 | + .setPayload(ipPacket); |
| 204 | 206 | ||
| 205 | sendReply(icmpReply, reqHost); | 207 | sendReply(icmpReply, reqHost); |
| 206 | } | 208 | } | ... | ... |
| ... | @@ -161,7 +161,15 @@ public final class OpenstackSwitchingHostManager extends AbstractProvider | ... | @@ -161,7 +161,15 @@ public final class OpenstackSwitchingHostManager extends AbstractProvider |
| 161 | return; | 161 | return; |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | - registerDhcpInfo(osPort); | 164 | + OpenstackSubnet openstackSubnet = openstackService.subnets().stream() |
| 165 | + .filter(n -> n.networkId().equals(osPort.networkId())) | ||
| 166 | + .findFirst().orElse(null); | ||
| 167 | + if (openstackSubnet == null) { | ||
| 168 | + log.warn("Failed to find subnet for {}", osPort); | ||
| 169 | + return; | ||
| 170 | + } | ||
| 171 | + | ||
| 172 | + registerDhcpInfo(osPort, openstackSubnet); | ||
| 165 | ConnectPoint connectPoint = new ConnectPoint(port.element().id(), port.number()); | 173 | ConnectPoint connectPoint = new ConnectPoint(port.element().id(), port.number()); |
| 166 | // TODO remove gateway IP from host annotation | 174 | // TODO remove gateway IP from host annotation |
| 167 | Map.Entry<String, Ip4Address> fixedIp = osPort.fixedIps().entrySet().stream().findFirst().get(); | 175 | Map.Entry<String, Ip4Address> fixedIp = osPort.fixedIps().entrySet().stream().findFirst().get(); |
| ... | @@ -175,7 +183,7 @@ public final class OpenstackSwitchingHostManager extends AbstractProvider | ... | @@ -175,7 +183,7 @@ public final class OpenstackSwitchingHostManager extends AbstractProvider |
| 175 | .set(VXLAN_ID, osNet.segmentId()) | 183 | .set(VXLAN_ID, osNet.segmentId()) |
| 176 | .set(TENANT_ID, osNet.tenantId()) | 184 | .set(TENANT_ID, osNet.tenantId()) |
| 177 | // TODO remove gateway IP from host annotation | 185 | // TODO remove gateway IP from host annotation |
| 178 | - .set(GATEWAY_IP, fixedIp.getValue().toString()) | 186 | + .set(GATEWAY_IP, openstackSubnet.gatewayIp()) |
| 179 | .set(CREATE_TIME, String.valueOf(System.currentTimeMillis())); | 187 | .set(CREATE_TIME, String.valueOf(System.currentTimeMillis())); |
| 180 | 188 | ||
| 181 | HostDescription hostDesc = new DefaultHostDescription( | 189 | HostDescription hostDesc = new DefaultHostDescription( |
| ... | @@ -202,18 +210,11 @@ public final class OpenstackSwitchingHostManager extends AbstractProvider | ... | @@ -202,18 +210,11 @@ public final class OpenstackSwitchingHostManager extends AbstractProvider |
| 202 | }); | 210 | }); |
| 203 | } | 211 | } |
| 204 | 212 | ||
| 205 | - private void registerDhcpInfo(OpenstackPort openstackPort) { | 213 | + private void registerDhcpInfo(OpenstackPort openstackPort, OpenstackSubnet openstackSubnet) { |
| 206 | checkNotNull(openstackPort); | 214 | checkNotNull(openstackPort); |
| 215 | + checkNotNull(openstackSubnet); | ||
| 207 | checkArgument(!openstackPort.fixedIps().isEmpty()); | 216 | checkArgument(!openstackPort.fixedIps().isEmpty()); |
| 208 | 217 | ||
| 209 | - OpenstackSubnet openstackSubnet = openstackService.subnets().stream() | ||
| 210 | - .filter(n -> n.networkId().equals(openstackPort.networkId())) | ||
| 211 | - .findFirst().orElse(null); | ||
| 212 | - if (openstackSubnet == null) { | ||
| 213 | - log.warn("Failed to find subnet for {}", openstackPort); | ||
| 214 | - return; | ||
| 215 | - } | ||
| 216 | - | ||
| 217 | Ip4Address ipAddress = openstackPort.fixedIps().values().stream().findFirst().get(); | 218 | Ip4Address ipAddress = openstackPort.fixedIps().values().stream().findFirst().get(); |
| 218 | IpPrefix subnetPrefix = IpPrefix.valueOf(openstackSubnet.cidr()); | 219 | IpPrefix subnetPrefix = IpPrefix.valueOf(openstackSubnet.cidr()); |
| 219 | Ip4Address broadcast = Ip4Address.makeMaskedAddress( | 220 | Ip4Address broadcast = Ip4Address.makeMaskedAddress( | ... | ... |
-
Please register or login to post a comment