[ONOS-3952] Implement FloatingIP Handler for OpenstackRoutingService
- Implements floatingIp REST interfaces & event handler
- Implements rulePopulate method for floatingIp handler
- Fixes minor logics
- Changes app structure
- exports configuration
- Implements case issue.
when openstack deletes vm w/o deassociating floatingIp,
openstack doesn`t send floatingIp deassociation event.
Change-Id: If4d8ac3fecfed1957d84139f94ae31f593a9097b
diff --git a/apps/openstacknetworking/openstackrouting/src/main/java/org/onosproject/openstacknetworking/routing/OpenstackPnatHandler.java b/apps/openstacknetworking/openstackrouting/src/main/java/org/onosproject/openstacknetworking/routing/OpenstackPnatHandler.java
index 4d9b60a..2912d7d 100644
--- a/apps/openstacknetworking/openstackrouting/src/main/java/org/onosproject/openstacknetworking/routing/OpenstackPnatHandler.java
+++ b/apps/openstacknetworking/openstackrouting/src/main/java/org/onosproject/openstacknetworking/routing/OpenstackPnatHandler.java
@@ -56,19 +56,18 @@
private final int portNum;
private final OpenstackPort openstackPort;
private final Port port;
+ private OpenstackRoutingConfig config;
private static final String DEVICE_OWNER_ROUTER_INTERFACE = "network:router_interface";
- // TODO: This will be replaced to get the information from openstacknetworkingservice.
- private static final MacAddress GATEWAYMAC = MacAddress.valueOf("1f:1f:1f:1f:1f:1f");
- private static final MacAddress EXTERNAL_INTERFACE_MAC = MacAddress.valueOf("00:00:00:00:00:11");
OpenstackPnatHandler(OpenstackRoutingRulePopulator rulePopulator, PacketContext context,
- int portNum, OpenstackPort openstackPort, Port port) {
+ int portNum, OpenstackPort openstackPort, Port port, OpenstackRoutingConfig config) {
this.rulePopulator = checkNotNull(rulePopulator);
this.context = checkNotNull(context);
this.portNum = checkNotNull(portNum);
this.openstackPort = checkNotNull(openstackPort);
this.port = checkNotNull(port);
+ this.config = checkNotNull(config);
}
@Override
@@ -85,7 +84,8 @@
OpenstackRouter router = getOpenstackRouter(openstackPort);
rulePopulator.populatePnatFlowRules(inboundPacket, openstackPort, portNum,
- getExternalIp(router), getExternalInterfaceMacAddress(), getExternalRouterMacAddress());
+ getExternalIp(router), MacAddress.valueOf(config.gatewayExternalInterfaceMac()),
+ MacAddress.valueOf(config.physicalRouterMac()));
packetOut((Ethernet) ethernet.clone(), inboundPacket.receivedFrom().deviceId(), portNum, router);
}
@@ -144,8 +144,9 @@
iPacket.setSourceAddress(getExternalIp(router).toString());
iPacket.resetChecksum();
iPacket.setParent(ethernet);
- ethernet.setSourceMACAddress(getExternalInterfaceMacAddress())
- .setDestinationMACAddress(getExternalRouterMacAddress());
+ ethernet.setPayload(iPacket);
+ ethernet.setSourceMACAddress(config.gatewayExternalInterfaceMac())
+ .setDestinationMACAddress(config.physicalRouterMac());
ethernet.resetChecksum();
treatment.setOutput(port.number());
@@ -153,11 +154,4 @@
packetService.emit(new DefaultOutboundPacket(deviceId, treatment.build(),
ByteBuffer.wrap(ethernet.serialize())));
}
-
- private MacAddress getExternalInterfaceMacAddress() {
- return EXTERNAL_INTERFACE_MAC;
- }
- private MacAddress getExternalRouterMacAddress() {
- return GATEWAYMAC;
- }
}
\ No newline at end of file