/* * proxy.h: dhcp proxy * * Copyright (c) 2013 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 included_dhcpv6_proxy_h #define included_dhcpv6_proxy_h #include #include #include #include #include #include #include #include #include typedef enum { #define dhcpv6_proxy_error(n,s) DHCPV6_PROXY_ERROR_##n, #include #undef dhcpv6_proxy_error DHCPV6_PROXY_N_ERROR, } dhcpv6_proxy_error_t; typedef struct { u32 oui; u32 fib_id; } dhcpv6_vss_id; typedef union { u8 as_u8[8]; dhcpv6_vss_id vpn_id; } dhcpv6_vss_info; typedef struct { ip6_address_t dhcp6_server; ip6_address_t dhcp6_src_address; u32 insert_vss; u32 server_fib6_index; u32 valid; } dhcpv6_server_t; typedef struct { /* Pool of DHCP servers */ dhcpv6_server_t * dhcp6_servers; /* Pool of selected DHCP server. Zero is the default server */ u32 * dhcp6_server_index_by_rx_fib_index; /* all DHCP servers address */ ip6_address_t all_dhcpv6_server_address; ip6_address_t all_dhcpv6_server_relay_agent_address; /* to drop pkts in server-to-client direction */ u32 error_drop_node_index; dhcpv6_vss_info *vss; /* hash lookup specific vrf_id -> VSS vector index*/ uword *vss_index_by_vrf_id; /* convenience */ vlib_main_t * vlib_main; vnet_main_t * vnet_main; } dhcpv6_proxy_main_t; dhcpv6_proxy_main_t dhcpv6_proxy_main; int dhcpv6_proxy_set_server (ip6_address_t *addr, ip6_address_t *src_address, u32 fib_id, int insert_vss, int is_del); int dhcpv6_proxy_set_vss(u32 tbl_id, u32 oui, u32 fib_id, int is_del); int dhcpv6_proxy_set_server_2 (ip6_address_t *addr, ip6_address_t *src_address, u32 rx_fib_id, u32 server_fib_id, int insert_vss, int is_del); #endif /* included_dhcpv6_proxy_h */