diff options
author | Luca Muscariello <lumuscar+fdio@cisco.com> | 2017-02-24 07:59:45 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2017-02-24 07:59:45 +0000 |
commit | e0ec678c016fbce560e7f94973d4fada3ba5e799 (patch) | |
tree | a171ed331a830510f3064a6ad99b296ac1b2d2bc /metis/ccnx/forwarder/metis/io/metis_EtherListener.h | |
parent | f28308bd99381ef5f1e178e2e1f870f245e35873 (diff) | |
parent | c580a00aac271a524e5a75b35f4b91c174ed227b (diff) |
Merge "Initial commit: sb-forwarder, metis." into sb-forwarder/master
Diffstat (limited to 'metis/ccnx/forwarder/metis/io/metis_EtherListener.h')
-rw-r--r-- | metis/ccnx/forwarder/metis/io/metis_EtherListener.h | 67 |
1 files changed, 67 insertions, 0 deletions
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 <ccnx/forwarder/metis/io/metis_GenericEther.h> + +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 |