/* * 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 #include #include #include #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