urpf: export to use it externally
Type: improvement Change-Id: Ia70f16c92dfc153256db6dcdf23f5487d5a7b678 Signed-off-by: Maxime Peim <mpeim@cisco.com>
This commit is contained in:

committed by
Beno�t Ganne

parent
7624083c27
commit
0720d65c7b
@ -22,6 +22,10 @@ add_vpp_plugin(urpf
|
||||
ip4_urpf.c
|
||||
ip6_urpf.c
|
||||
|
||||
INSTALL_HEADERS
|
||||
urpf_dp.h
|
||||
urpf.h
|
||||
|
||||
API_FILES
|
||||
urpf.api
|
||||
)
|
||||
|
@ -60,7 +60,17 @@ static const char *urpf_feats[N_AF][VLIB_N_DIR][URPF_N_MODES] =
|
||||
urpf_data_t *urpf_cfgs[N_AF][VLIB_N_DIR];
|
||||
|
||||
u8 *
|
||||
format_urpf_mode (u8 * s, va_list * a)
|
||||
format_urpf_trace (u8 *s, va_list *va)
|
||||
{
|
||||
CLIB_UNUSED (vlib_main_t * vm) = va_arg (*va, vlib_main_t *);
|
||||
CLIB_UNUSED (vlib_node_t * node) = va_arg (*va, vlib_node_t *);
|
||||
urpf_trace_t *t = va_arg (*va, urpf_trace_t *);
|
||||
|
||||
return format (s, "uRPF:%d fib:%d", t->urpf, t->fib_index);
|
||||
}
|
||||
|
||||
__clib_export u8 *
|
||||
format_urpf_mode (u8 *s, va_list *a)
|
||||
{
|
||||
urpf_mode_t mode = va_arg (*a, int);
|
||||
|
||||
@ -76,8 +86,8 @@ format_urpf_mode (u8 * s, va_list * a)
|
||||
return (format (s, "unknown"));
|
||||
}
|
||||
|
||||
static uword
|
||||
unformat_urpf_mode (unformat_input_t * input, va_list * args)
|
||||
__clib_export uword
|
||||
unformat_urpf_mode (unformat_input_t *input, va_list *args)
|
||||
{
|
||||
urpf_mode_t *mode = va_arg (*args, urpf_mode_t *);
|
||||
|
||||
@ -94,7 +104,16 @@ unformat_urpf_mode (unformat_input_t * input, va_list * args)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
__clib_export int
|
||||
urpf_feature_enable_disable (ip_address_family_t af, vlib_dir_t dir,
|
||||
urpf_mode_t mode, u32 sw_if_index, int enable)
|
||||
{
|
||||
return vnet_feature_enable_disable (urpf_feat_arcs[af][dir],
|
||||
urpf_feats[af][dir][mode], sw_if_index,
|
||||
enable, 0, 0);
|
||||
}
|
||||
|
||||
__clib_export int
|
||||
urpf_update (urpf_mode_t mode, u32 sw_if_index, ip_address_family_t af,
|
||||
vlib_dir_t dir, u32 table_id)
|
||||
{
|
||||
|
@ -32,7 +32,15 @@ typedef enum urpf_mode_t_
|
||||
|
||||
#define URPF_N_MODES (URPF_MODE_STRICT+1)
|
||||
|
||||
extern u8 *format_urpf_mode (u8 * s, va_list * a);
|
||||
typedef struct
|
||||
{
|
||||
index_t urpf;
|
||||
u32 fib_index;
|
||||
} urpf_trace_t;
|
||||
|
||||
u8 *format_urpf_trace (u8 *s, va_list *va);
|
||||
u8 *format_urpf_mode (u8 *s, va_list *a);
|
||||
uword unformat_urpf_mode (unformat_input_t *input, va_list *args);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@ -43,8 +51,8 @@ typedef struct
|
||||
|
||||
extern urpf_data_t *urpf_cfgs[N_AF][VLIB_N_DIR];
|
||||
|
||||
extern int urpf_update (urpf_mode_t mode, u32 sw_if_index,
|
||||
ip_address_family_t af, vlib_dir_t dir, u32 table_id);
|
||||
int urpf_update (urpf_mode_t mode, u32 sw_if_index, ip_address_family_t af,
|
||||
vlib_dir_t dir, u32 table_id);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -53,21 +53,6 @@
|
||||
*
|
||||
* This file contains the interface unicast source check.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
index_t urpf;
|
||||
u32 fib_index;
|
||||
} urpf_trace_t;
|
||||
|
||||
static u8 *
|
||||
format_urpf_trace (u8 * s, va_list * va)
|
||||
{
|
||||
CLIB_UNUSED (vlib_main_t * vm) = va_arg (*va, vlib_main_t *);
|
||||
CLIB_UNUSED (vlib_node_t * node) = va_arg (*va, vlib_node_t *);
|
||||
urpf_trace_t *t = va_arg (*va, urpf_trace_t *);
|
||||
|
||||
return format (s, "uRPF:%d fib:%d", t->urpf, t->fib_index);
|
||||
}
|
||||
|
||||
#define foreach_urpf_error \
|
||||
_(DROP, "uRPF Drop") \
|
||||
|
@ -1144,6 +1144,7 @@ list(APPEND VNET_HEADERS
|
||||
fib/fib_path_list.h
|
||||
fib/fib_sas.h
|
||||
fib/fib_source.h
|
||||
fib/fib_urpf_list.h
|
||||
)
|
||||
|
||||
list(APPEND VNET_API_FILES
|
||||
|
Reference in New Issue
Block a user