diff options
Diffstat (limited to 'src/vnet/lisp-gpe/lisp_gpe_sub_interface.h')
-rw-r--r-- | src/vnet/lisp-gpe/lisp_gpe_sub_interface.h | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/src/vnet/lisp-gpe/lisp_gpe_sub_interface.h b/src/vnet/lisp-gpe/lisp_gpe_sub_interface.h deleted file mode 100644 index 7375bf00ccc..00000000000 --- a/src/vnet/lisp-gpe/lisp_gpe_sub_interface.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2016 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 - * @brief LISP sub-interfaces. - * - */ - -#ifndef __LISP_GPE_SUB_INTERFACE_H__ -#define __LISP_GPE_SUB_INTERFACE_H__ - -#include <vnet/lisp-gpe/lisp_gpe.h> - -/** - * A Key for lookup in the L£ sub-interface DB - */ -typedef struct lisp_gpe_sub_interface_key_t_ -{ - /** - * The local-RLOC. This is the interface's 'source' address. - */ - ip_address_t local_rloc; - - /** - * The VNI. In network byte order! - */ - u32 vni; -} lisp_gpe_sub_interface_key_t; - -/** - * @brief A LISP L3 sub-interface - * - * A LISP sub-interface is a multi-access interface, whose local address is a - * single local-RLOC. Adjacencies that form on this sub-interface, represent - * remote RLOCs. - * This is analogous to an ethernet interface. - * As with all interface types it can only be present in one VRF, hence a - * LISP sub-interface is per-local-rloc and per-VNI. - */ -typedef struct lisp_gpe_sub_interface_t_ -{ - /** - * The interface's key inthe DB; rloc & vni; - * The key is allocated from the heap so it can be used in the hash-table. - * if it's part of the object, then it is subjet to realloc, which no-worky. - */ - lisp_gpe_sub_interface_key_t *key; - - /** - * The Table-ID in the overlay that this interface is bound to. - */ - u32 eid_table_id; - - /** - * A reference counting lock on the number of users of this interface. - * When this count drops to 0 the interface is deleted. - */ - u32 locks; - - /** - * The SW if index assigned to this sub-interface - */ - u32 sw_if_index; - - /** - * The SW IF index assigned to the main interface of which this is a sub. - */ - u32 main_sw_if_index; -} lisp_gpe_sub_interface_t; - -extern index_t lisp_gpe_sub_interface_find_or_create_and_lock (const - ip_address_t * - lrloc, - u32 - eid_table_id, - u32 vni); - -extern u8 *format_lisp_gpe_sub_interface (u8 * s, va_list * ap); - -extern void lisp_gpe_sub_interface_unlock (index_t itf); - -extern const lisp_gpe_sub_interface_t *lisp_gpe_sub_interface_get (index_t - itf); - -/** - * A DB of all L3 sub-interfaces. The key is:{VNI,l-RLOC} - */ -extern uword *lisp_gpe_sub_interfaces_sw_if_index; - -/** - * @brief - * Get a VNET L3 interface matching the local-RLOC and VNI - * Called from the data-plane - */ -always_inline u32 -lisp_gpe_sub_interface_find_ip6 (const ip6_address_t * addr, u32 vni) -{ - lisp_gpe_sub_interface_key_t key; - const uword *p; - - ip_addr_v6 (&key.local_rloc).as_u64[0] = addr->as_u64[0]; - ip_addr_v6 (&key.local_rloc).as_u64[1] = addr->as_u64[1]; - ip_addr_version (&key.local_rloc) = AF_IP6; - key.vni = vni; - - p = hash_get_mem (&lisp_gpe_sub_interfaces_sw_if_index, &key); - - if (NULL != p) - return p[0]; - - return (INDEX_INVALID); -} - -/** - * @brief - * Get a VNET L3 interface matching the local-RLOC and VNI - * Called from the data-plane - */ -always_inline index_t -lisp_gpe_sub_interface_find_ip4 (const ip4_address_t * addr, u32 vni) -{ - lisp_gpe_sub_interface_key_t key; - const uword *p; - - ip_addr_v4 (&key.local_rloc).as_u32 = addr->as_u32; - key.local_rloc.version = AF_IP4; - key.vni = vni; - - p = hash_get_mem (&lisp_gpe_sub_interfaces_sw_if_index, &key); - - if (NULL != p) - return p[0]; - - return (INDEX_INVALID); -} - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "gnu") - * End: - */ - -#endif |