summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_attr.h
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgp_attr.h')
-rw-r--r--bgpd/bgp_attr.h39
1 files changed, 31 insertions, 8 deletions
diff --git a/bgpd/bgp_attr.h b/bgpd/bgp_attr.h
index 6a235d54..553a91b5 100644
--- a/bgpd/bgp_attr.h
+++ b/bgpd/bgp_attr.h
@@ -146,12 +146,36 @@ typedef enum {
#define BGP_ATTR_PARSE_OK(ret) ((ret) >= BGP_ATTR_PARSE_PROCEED)
+typedef struct bgp_attr_parser_args {
+ struct peer* peer;
+ struct stream* s ;
+
+ uint8_t type;
+ uint8_t flags;
+ bgp_size_t length; /* attribute data length; */
+
+ struct attr attr;
+
+ struct aspath *as4_path ;
+
+ as_t as4_aggregator_as ;
+ struct in_addr as4_aggregator_addr ;
+
+ struct bgp_nlri update ;
+ struct bgp_nlri withdraw ;
+
+ struct bgp_nlri mp_update ;
+ struct bgp_nlri mp_withdraw ;
+
+ bool mp_eor ;
+} bgp_attr_parser_args_t ;
+
+typedef bgp_attr_parser_args_t* bgp_attr_parser_args ;
+
/* Prototypes. */
extern void bgp_attr_init (void);
extern void bgp_attr_finish (void);
-extern bgp_attr_parse_ret_t bgp_attr_parse (struct peer *, struct attr *,
- struct bgp_nlri *,
- struct bgp_nlri *, bool*);
+extern bgp_attr_parse_ret_t bgp_attr_parse (restrict bgp_attr_parser_args args);
extern int bgp_attr_check (struct peer *, struct attr *, bool);
extern struct attr_extra *bgp_attr_extra_get (struct attr *);
extern void bgp_attr_extra_free (struct attr *);
@@ -187,10 +211,9 @@ extern void cluster_unintern (struct cluster_list *);
/* Transit attribute prototypes. */
void transit_unintern (struct transit *);
-/* Exported for unit-test purposes only */
-extern bgp_attr_parse_ret_t bgp_mp_reach_parse (struct peer *, const bgp_size_t,
- struct attr *, const u_char, struct bgp_nlri *);
-extern bgp_attr_parse_ret_t bgp_mp_unreach_parse (struct peer *,
- const bgp_size_t, const u_char, struct bgp_nlri *, bool*);
+/* Below exported for unit-test purposes only
+ * */
+extern int bgp_mp_reach_parse (bgp_attr_parser_args args);
+extern int bgp_mp_unreach_parse (bgp_attr_parser_args args);
#endif /* _QUAGGA_BGP_ATTR_H */