1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /* BGP Flowspec header for utilities
3 * Copyright (C) 2018 6WIND
6 #ifndef _FRR_BGP_FLOWSPEC_UTIL_H
7 #define _FRR_BGP_FLOWSPEC_UTIL_H
11 #define BGP_FLOWSPEC_STRING_DISPLAY_MAX 512
13 enum bgp_flowspec_util_nlri_t
{
14 BGP_FLOWSPEC_VALIDATE_ONLY
= 0,
15 BGP_FLOWSPEC_RETURN_STRING
= 1,
16 BGP_FLOWSPEC_CONVERT_TO_NON_OPAQUE
= 2,
17 BGP_FLOWSPEC_RETURN_JSON
= 3,
21 extern int bgp_flowspec_op_decode(enum bgp_flowspec_util_nlri_t type
,
24 void *result
, int *error
);
26 extern int bgp_flowspec_ip_address(enum bgp_flowspec_util_nlri_t type
,
29 void *result
, int *error
,
30 afi_t afi
, uint8_t *ipv6_offset
);
32 extern int bgp_flowspec_bitmask_decode(enum bgp_flowspec_util_nlri_t type
,
35 void *result
, int *error
);
37 struct bgp_pbr_entry_main
;
38 extern int bgp_flowspec_match_rules_fill(uint8_t *nlri_content
, int len
,
39 struct bgp_pbr_entry_main
*bpem
,
42 extern bool bgp_flowspec_contains_prefix(const struct prefix
*pfs
,
46 extern bool bgp_flowspec_get_first_nh(struct bgp
*bgp
, struct bgp_path_info
*pi
,
47 struct prefix
*nh
, afi_t afi
);
49 #endif /* _FRR_BGP_FLOWSPEC_UTIL_H */