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
|
ip4_urpf.c
|
||||||
ip6_urpf.c
|
ip6_urpf.c
|
||||||
|
|
||||||
|
INSTALL_HEADERS
|
||||||
|
urpf_dp.h
|
||||||
|
urpf.h
|
||||||
|
|
||||||
API_FILES
|
API_FILES
|
||||||
urpf.api
|
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];
|
urpf_data_t *urpf_cfgs[N_AF][VLIB_N_DIR];
|
||||||
|
|
||||||
u8 *
|
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);
|
urpf_mode_t mode = va_arg (*a, int);
|
||||||
|
|
||||||
@ -76,8 +86,8 @@ format_urpf_mode (u8 * s, va_list * a)
|
|||||||
return (format (s, "unknown"));
|
return (format (s, "unknown"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uword
|
__clib_export uword
|
||||||
unformat_urpf_mode (unformat_input_t * input, va_list * args)
|
unformat_urpf_mode (unformat_input_t *input, va_list *args)
|
||||||
{
|
{
|
||||||
urpf_mode_t *mode = va_arg (*args, urpf_mode_t *);
|
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;
|
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,
|
urpf_update (urpf_mode_t mode, u32 sw_if_index, ip_address_family_t af,
|
||||||
vlib_dir_t dir, u32 table_id)
|
vlib_dir_t dir, u32 table_id)
|
||||||
{
|
{
|
||||||
|
@ -32,7 +32,15 @@ typedef enum urpf_mode_t_
|
|||||||
|
|
||||||
#define URPF_N_MODES (URPF_MODE_STRICT+1)
|
#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
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -43,8 +51,8 @@ typedef struct
|
|||||||
|
|
||||||
extern urpf_data_t *urpf_cfgs[N_AF][VLIB_N_DIR];
|
extern urpf_data_t *urpf_cfgs[N_AF][VLIB_N_DIR];
|
||||||
|
|
||||||
extern int urpf_update (urpf_mode_t mode, u32 sw_if_index,
|
int urpf_update (urpf_mode_t mode, u32 sw_if_index, ip_address_family_t af,
|
||||||
ip_address_family_t af, vlib_dir_t dir, u32 table_id);
|
vlib_dir_t dir, u32 table_id);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -53,21 +53,6 @@
|
|||||||
*
|
*
|
||||||
* This file contains the interface unicast source check.
|
* 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 \
|
#define foreach_urpf_error \
|
||||||
_(DROP, "uRPF Drop") \
|
_(DROP, "uRPF Drop") \
|
||||||
|
@ -1144,6 +1144,7 @@ list(APPEND VNET_HEADERS
|
|||||||
fib/fib_path_list.h
|
fib/fib_path_list.h
|
||||||
fib/fib_sas.h
|
fib/fib_sas.h
|
||||||
fib/fib_source.h
|
fib/fib_source.h
|
||||||
|
fib/fib_urpf_list.h
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND VNET_API_FILES
|
list(APPEND VNET_API_FILES
|
||||||
|
Reference in New Issue
Block a user