diff options
Diffstat (limited to 'framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp')
4 files changed, 164 insertions, 0 deletions
diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpService.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpService.java new file mode 100644 index 00000000..8ffe17a4 --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpService.java @@ -0,0 +1,64 @@ +/* + * Copyright 2014-2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.net.proxyarp; + +import org.onlab.packet.Ethernet; +import org.onlab.packet.IpAddress; +import org.onosproject.net.ConnectPoint; +import org.onosproject.net.packet.PacketContext; + +/** + * Service for processing arp requests on behalf of applications. + */ +// TODO: move to the peer host package +public interface ProxyArpService { + + /** + * Returns whether this particular IP address is known to the system. + * + * @param addr an IP address + * @return true if know, false otherwise + */ + boolean isKnown(IpAddress addr); + + /** + * Sends a reply for a given request. If the host is not known then the + * arp or neighbor solicitation will be flooded at all edge ports. + * + * @param eth an arp or neighbor solicitation request + * @param inPort the port the request was received on + */ + void reply(Ethernet eth, ConnectPoint inPort); + + /** + * Forwards an ARP or neighbor solicitation request to its destination. + * Floods at the edg the request if the destination is not known. + * + * @param eth an ethernet frame containing an ARP or neighbor solicitation + * request. + * @param inPort the port the request was received on + */ + void forward(Ethernet eth, ConnectPoint inPort); + + /** + * Handles a arp or neighbor solicitation packet. + * Replies to arp or neighbor solicitation requests and forwards request + * to the right place. + * @param context the packet context to handle + * @return true if handled, false otherwise. + */ + boolean handlePacket(PacketContext context); +} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStore.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStore.java new file mode 100644 index 00000000..b6564212 --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStore.java @@ -0,0 +1,45 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.net.proxyarp; + +import org.onosproject.net.ConnectPoint; +import org.onosproject.net.Host; + +import java.nio.ByteBuffer; + +/** + * State distribution mechanism for the proxy ARP service. + */ +public interface ProxyArpStore { + + /** + * Forwards an ARP or neighbor solicitation request to its destination. + * Floods at the edg the request if the destination is not known. + * + * @param outPort the port the request was received on + * @param subject subject host + * @param packet an ethernet frame containing an ARP or neighbor + * solicitation request + */ + void forward(ConnectPoint outPort, Host subject, ByteBuffer packet); + + /** + * Associates the specified delegate with the store. + * + * @param delegate store delegate + */ + void setDelegate(ProxyArpStoreDelegate delegate); +} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStoreDelegate.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStoreDelegate.java new file mode 100644 index 00000000..d0e273c8 --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/ProxyArpStoreDelegate.java @@ -0,0 +1,35 @@ +/* + * Copyright 2015 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.onosproject.net.proxyarp; + +import org.onosproject.net.ConnectPoint; + +import java.nio.ByteBuffer; + +/** + * Proxy ARP store delegate. + */ +public interface ProxyArpStoreDelegate { + + /** + * Emits ARP or neighbour discovery response packet. + * + * @param outPort output connection point + * @param packet packet to emit + */ + void emitResponse(ConnectPoint outPort, ByteBuffer packet); + +} diff --git a/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/package-info.java b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/package-info.java new file mode 100644 index 00000000..6ddd4926 --- /dev/null +++ b/framework/src/onos/core/api/src/main/java/org/onosproject/net/proxyarp/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2014 Open Networking Laboratory + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Base abstractions related to the proxy arp service. + */ +package org.onosproject.net.proxyarp; |