diff options
author | Ed Warnicke <eaw@cisco.com> | 2015-12-08 15:45:58 -0700 |
---|---|---|
committer | Ed Warnicke <eaw@cisco.com> | 2015-12-08 15:47:27 -0700 |
commit | cb9cadad578297ffd78fa8a33670bdf1ab669e7e (patch) | |
tree | 6ac2be912482cc7849a26f0ab845561c3d7f4e26 /vnet/vnet/dhcpv6/proxy.h | |
parent | fb0815d4ae4bb0fe27bd9313f34b45c8593b907e (diff) |
Initial commit of vpp code.v1.0.0
Change-Id: Ib246f1fbfce93274020ee93ce461e3d8bd8b9f17
Signed-off-by: Ed Warnicke <eaw@cisco.com>
Diffstat (limited to 'vnet/vnet/dhcpv6/proxy.h')
-rw-r--r-- | vnet/vnet/dhcpv6/proxy.h | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/vnet/vnet/dhcpv6/proxy.h b/vnet/vnet/dhcpv6/proxy.h new file mode 100644 index 00000000000..bc10d7ce17e --- /dev/null +++ b/vnet/vnet/dhcpv6/proxy.h @@ -0,0 +1,88 @@ +/* + * 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 <vnet/vnet.h> +#include <vnet/ethernet/ethernet.h> +#include <vnet/ip/ip.h> +#include <vnet/ip/ip4.h> +#include <vnet/ip/ip6_packet.h> +#include <vnet/pg/pg.h> +#include <vnet/ip/format.h> +#include <vnet/ip/udp.h> +#include <vnet/dhcpv6/packet.h> + +typedef enum { +#define dhcpv6_proxy_error(n,s) DHCPV6_PROXY_ERROR_##n, +#include <vnet/dhcpv6/proxy_error.def> +#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 { + /* server to which we we relay. $$$ vector / pool someday */ + ip6_address_t dhcpv6_server; + + /* FIB index */ + u32 server_fib_index; + + /* source address to paste into relayed pkts */ + ip6_address_t dhcpv6_src_address; + + /* all DHCP servers address */ + ip6_address_t all_dhcpv6_server_address; + ip6_address_t all_dhcpv6_server_relay_agent_address; + + /* true if the relay should insert option 82 */ + int insert_option; + + /* 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); + +#endif /* included_dhcpv6_proxy_h */ |