diff options
author | Pierre Pfister <ppfister@cisco.com> | 2016-07-16 08:51:16 +0100 |
---|---|---|
committer | Damjan Marion <damarion@cisco.com> | 2016-07-17 14:00:16 +0200 |
commit | fd8181b694f97376c880e6b70ec63a8a678ef613 (patch) | |
tree | dfcaf81c478691e679c7eeed41be0fab44e7ccbf /plugins/ila-plugin/ila/ila.h | |
parent | 7d6b81e3191fda5327e7ca54b305ea26357f4c7a (diff) |
Add ILA plugin
This plugin is implementation of Identifier Locator Addressing (ILA)
per IETF draft-herbert-nvo3-ila-2
Change-Id: I5d5f8fb55c490f358f628bceb5f57e7e7408e6ed
Signed-off-by: Pierre Pfister <ppfister@cisco.com>
Signed-off-by: Wolfgang <wolfgang.beck01@gmail.com>
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'plugins/ila-plugin/ila/ila.h')
-rw-r--r-- | plugins/ila-plugin/ila/ila.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/plugins/ila-plugin/ila/ila.h b/plugins/ila-plugin/ila/ila.h new file mode 100644 index 00000000000..c2650c1d2d5 --- /dev/null +++ b/plugins/ila-plugin/ila/ila.h @@ -0,0 +1,88 @@ +/* + * 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. + */ + +#ifndef ILA_H +#define ILA_H + +#include <vnet/vnet.h> +#include <vnet/ip/ip.h> + +#include <vppinfra/bihash_24_8.h> +#include <vppinfra/bihash_template.h> + +#define ila_foreach_type \ + _(IID, 0, "iid") \ + _(LUID, 1, "luid") \ + _(VNID4, 2, "vnid-ip4") \ + _(VNID6, 3, "vnid-ip6") \ + _(VNIDM, 4, "vnid-multicast") + +typedef enum { +#define _(i,n,s) ILA_TYPE_##i = n, + ila_foreach_type +#undef _ +} ila_type_t; + +#define ila_csum_foreach_type \ +_(NO_ACTION, 0, "no-action") \ +_(NEUTRAL_MAP, 1, "neutral-map") \ +_(ADJUST_TRANSPORT, 2, "adjust-transport") + +typedef enum { +#define _(i,n,s) ILA_CSUM_MODE_##i = n, + ila_csum_foreach_type +#undef _ + ILA_CSUM_N_TYPES +} ila_csum_mode_t; + +typedef struct { + ila_type_t type; + ip6_address_t sir_address; + ip6_address_t ila_address; + u32 ila_adj_index; + ila_csum_mode_t csum_mode; +} ila_entry_t; + +typedef struct { + u32 entry_index; +} ila_adj_data_t; + +typedef struct { + ila_entry_t *entries; //Pool of ILA entries + + u64 lookup_table_nbuckets; + u64 lookup_table_size; + clib_bihash_24_8_t id_to_entry_table; + + u32 ila_sir2ila_feature_index; + + u32 ip6_lookup_next_index; +} ila_main_t; + + +typedef struct { + ila_type_t type; + ip6_address_t sir_address; + u64 locator; + u32 vnid; + u32 local_adj_index; + ila_csum_mode_t csum_mode; + u8 is_del; +} ila_add_del_entry_args_t; + +int ila_add_del_entry (ila_add_del_entry_args_t * args); +int ila_interface (u32 sw_if_index, u8 disable); + +#endif //ILA_H |