From c580a00aac271a524e5a75b35f4b91c174ed227b Mon Sep 17 00:00:00 2001 From: michele papalini Date: Thu, 23 Feb 2017 17:01:34 +0100 Subject: Initial commit: sb-forwarder, metis. Change-Id: I65ee3c851a6901929ef4417ad80d34bca0dce445 Signed-off-by: michele papalini --- .../ccnx/forwarder/metis/io/metis_EtherListener.h | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 metis/ccnx/forwarder/metis/io/metis_EtherListener.h (limited to 'metis/ccnx/forwarder/metis/io/metis_EtherListener.h') diff --git a/metis/ccnx/forwarder/metis/io/metis_EtherListener.h b/metis/ccnx/forwarder/metis/io/metis_EtherListener.h new file mode 100644 index 00000000..12aee973 --- /dev/null +++ b/metis/ccnx/forwarder/metis/io/metis_EtherListener.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * 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. + */ + +/** + * @file metis_EtherListener.h + * @brief Listen for raw ethernet frames on an interface + * + * <#Detailed Description#> + * + */ + +#ifndef Metis_metis_EtherListener_h +#define Metis_metis_EtherListener_h + +#include + +struct metis_listener_ether; +typedef struct metis_listener_ether MetisListenerEther; + +/** + * @function metisListenerEther_Create + * @abstract Create a L2 listener on a raw ethertype + * @discussion + * Requires root, will send/receive ethernet frames on the specified device. + * The exact mechanism varies by system. + * + * @param deviceName is the system name of the interface (e.g. "en0") + * @return <#return#> + */ +MetisListenerOps *metisEtherListener_Create(MetisForwarder *metis, const char *deviceName, uint16_t ethertype); + +/** + * Return the underlying GenericEther of the listener + * + * The MetisGenericEther wraps the platform-specific IO operations of the ethernet connection. + * Will assert if the listenerOps is not of type METIS_ENCAP_ETHER. + * + * @param [<#in out in,out#>] <#name#> <#description#> + * + * @retval non-null The underlying generic ethernet + * @retval null An error + * + * Example: + * @code + * { + * MetisListenerSet *listenerSet = metisForwarder_GetListenerSet(metis); + * MetisListenerOps *listenerOps = metisListenerSet_Find(listenerSet, METIS_ENCAP_ETHER, linkAddress); + * if (listenerOps) { + * MetisGenericEther *ether = metisEtherListener_GetGenericEtherFromListener(listenerOps); + * } + * } + * @endcode + */ +MetisGenericEther *metisEtherListener_GetGenericEtherFromListener(MetisListenerOps *listenerOps); +#endif // Metis_metis_EtherListener_h -- cgit 1.2.3-korg