diff options
Diffstat (limited to 'net/openbgpd/files/patch-bgpd_rde.h')
-rw-r--r-- | net/openbgpd/files/patch-bgpd_rde.h | 361 |
1 files changed, 0 insertions, 361 deletions
diff --git a/net/openbgpd/files/patch-bgpd_rde.h b/net/openbgpd/files/patch-bgpd_rde.h deleted file mode 100644 index ba7d2d095891..000000000000 --- a/net/openbgpd/files/patch-bgpd_rde.h +++ /dev/null @@ -1,361 +0,0 @@ -Index: bgpd/rde.h -=================================================================== -RCS file: /home/cvs/private/hrs/openbgpd/bgpd/rde.h,v -retrieving revision 1.1.1.8 -retrieving revision 1.1.1.13 -diff -u -p -r1.1.1.8 -r1.1.1.13 ---- bgpd/rde.h 14 Feb 2010 20:19:57 -0000 1.1.1.8 -+++ bgpd/rde.h 8 Dec 2012 10:37:09 -0000 1.1.1.13 -@@ -1,8 +1,8 @@ --/* $OpenBSD: rde.h,v 1.120 2009/06/06 01:10:29 claudio Exp $ */ -+/* $OpenBSD: rde.h,v 1.144 2012/09/12 05:56:22 claudio Exp $ */ - - /* - * Copyright (c) 2003, 2004 Claudio Jeker <claudio@openbsd.org> and -- * Andre Oppermann <oppermann@pipeline.ch> -+ * Andre Oppermann <oppermann@networx.ch> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above -@@ -56,16 +56,16 @@ struct rde_peer { - struct bgpd_addr local_v6_addr; - struct uptree_prefix up_prefix; - struct uptree_attr up_attrs; -- struct uplist_attr updates; -- struct uplist_prefix withdraws; -- struct uplist_attr updates6; -- struct uplist_prefix withdraws6; -- struct capabilities capa_announced; -- struct capabilities capa_received; -+ struct uplist_attr updates[AID_MAX]; -+ struct uplist_prefix withdraws[AID_MAX]; -+ struct capabilities capa; -+ time_t staletime[AID_MAX]; - u_int64_t prefix_rcvd_update; - u_int64_t prefix_rcvd_withdraw; -+ u_int64_t prefix_rcvd_eor; - u_int64_t prefix_sent_update; - u_int64_t prefix_sent_withdraw; -+ u_int64_t prefix_sent_eor; - u_int32_t prefix_cnt; /* # of prefixes */ - u_int32_t remote_bgpid; /* host byte order! */ - u_int32_t up_pcnt; -@@ -75,12 +75,16 @@ struct rde_peer { - enum peer_state state; - u_int16_t ribid; - u_int16_t short_as; -+ u_int16_t mrt_idx; - u_int8_t reconf_in; /* in filter changed */ - u_int8_t reconf_out; /* out filter changed */ -+ u_int8_t reconf_rib; /* rib changed */ - }; - - #define AS_SET 1 - #define AS_SEQUENCE 2 -+#define AS_CONFED_SEQUENCE 3 -+#define AS_CONFED_SET 4 - #define ASPATH_HEADER_SIZE (sizeof(struct aspath) - sizeof(u_char)) - - LIST_HEAD(aspath_list, aspath); -@@ -117,6 +121,9 @@ enum attrtypes { - #define ATTR_PARTIAL 0x20 - #define ATTR_TRANSITIVE 0x40 - #define ATTR_OPTIONAL 0x80 -+#define ATTR_RESERVED 0x0f -+/* by default mask the reserved bits and the ext len bit */ -+#define ATTR_DEFMASK (ATTR_RESERVED | ATTR_EXTLEN) - - /* default attribute flags for well known attributes */ - #define ATTR_WELL_KNOWN ATTR_TRANSITIVE -@@ -163,6 +170,8 @@ LIST_HEAD(prefix_head, prefix); - #define F_NEXTHOP_REJECT 0x02000 - #define F_NEXTHOP_BLACKHOLE 0x04000 - #define F_NEXTHOP_NOMODIFY 0x08000 -+#define F_NEXTHOP_MASK 0x0f000 -+#define F_ATTR_PARSE_ERR 0x10000 - #define F_ATTR_LINKED 0x20000 - - -@@ -220,14 +229,14 @@ struct nexthop { - /* generic entry without address specific part */ - struct pt_entry { - RB_ENTRY(pt_entry) pt_e; -- sa_family_t af; -+ u_int8_t aid; - u_int8_t prefixlen; - u_int16_t refcnt; - }; - - struct pt_entry4 { - RB_ENTRY(pt_entry) pt_e; -- sa_family_t af; -+ u_int8_t aid; - u_int8_t prefixlen; - u_int16_t refcnt; - struct in_addr prefix4; -@@ -235,12 +244,25 @@ struct pt_entry4 { - - struct pt_entry6 { - RB_ENTRY(pt_entry) pt_e; -- sa_family_t af; -+ u_int8_t aid; - u_int8_t prefixlen; - u_int16_t refcnt; - struct in6_addr prefix6; - }; - -+struct pt_entry_vpn4 { -+ RB_ENTRY(pt_entry) pt_e; -+ u_int8_t aid; -+ u_int8_t prefixlen; -+ u_int16_t refcnt; -+ struct in_addr prefix4; -+ u_int64_t rd; -+ u_int8_t labelstack[21]; -+ u_int8_t labellen; -+ u_int8_t pad1; -+ u_int8_t pad2; -+}; -+ - struct rib_context { - LIST_ENTRY(rib_context) entry; - struct rib_entry *ctx_re; -@@ -250,7 +272,7 @@ struct rib_context { - void (*ctx_wait)(void *); - void *ctx_arg; - unsigned int ctx_count; -- sa_family_t ctx_af; -+ u_int8_t ctx_aid; - }; - - struct rib_entry { -@@ -262,23 +284,15 @@ struct rib_entry { - u_int16_t flags; - }; - --enum rib_state { -- RIB_NONE, -- RIB_ACTIVE, -- RIB_DELETE --}; -- - struct rib { - char name[PEER_DESCR_LEN]; - struct rib_tree rib; -- enum rib_state state; -+ u_int rtableid; - u_int16_t flags; - u_int16_t id; -+ enum reconf_action state; - }; - --#define F_RIB_ENTRYLOCK 0x0001 --#define F_RIB_NOEVALUATE 0x0002 --#define F_RIB_NOFIB 0x0004 - #define RIB_FAILED 0xffff - - struct prefix { -@@ -292,8 +306,14 @@ struct prefix { - extern struct rde_memstats rdemem; - - /* prototypes */ -+/* mrt.c */ -+int mrt_dump_v2_hdr(struct mrt *, struct bgpd_config *, -+ struct rde_peer_head *); -+void mrt_dump_upcall(struct rib_entry *, void *); -+void mrt_done(void *); -+ - /* rde.c */ --void rde_send_kroute(struct prefix *, struct prefix *); -+void rde_send_kroute(struct prefix *, struct prefix *, u_int16_t); - void rde_send_nexthop(struct bgpd_addr *, int); - void rde_send_pftable(u_int16_t, struct bgpd_addr *, - u_int8_t, int); -@@ -309,7 +329,7 @@ int rde_as4byte(struct rde_peer *); - /* rde_attr.c */ - int attr_write(void *, u_int16_t, u_int8_t, u_int8_t, void *, - u_int16_t); --int attr_writebuf(struct buf *, u_int8_t, u_int8_t, void *, -+int attr_writebuf(struct ibuf *, u_int8_t, u_int8_t, void *, - u_int16_t); - void attr_init(u_int32_t); - void attr_shutdown(void); -@@ -327,6 +347,7 @@ int aspath_verify(void *, u_int16_t, i - #define AS_ERR_LEN -1 - #define AS_ERR_TYPE -2 - #define AS_ERR_BAD -3 -+#define AS_ERR_SOFT -4 - void aspath_init(u_int32_t); - void aspath_shutdown(void); - struct aspath *aspath_get(void *, u_int16_t); -@@ -341,22 +362,66 @@ u_int32_t aspath_neighbor(struct aspath - int aspath_loopfree(struct aspath *, u_int32_t); - int aspath_compare(struct aspath *, struct aspath *); - u_char *aspath_prepend(struct aspath *, u_int32_t, int, u_int16_t *); --int aspath_match(struct aspath *, enum as_spec, u_int32_t); --int community_match(void *, u_int16_t, int, int); -+int aspath_lenmatch(struct aspath *, enum aslen_spec, u_int); -+int community_match(struct rde_aspath *, int, int); - int community_set(struct rde_aspath *, int, int); - void community_delete(struct rde_aspath *, int, int); -+int community_ext_match(struct rde_aspath *, -+ struct filter_extcommunity *, u_int16_t); -+int community_ext_set(struct rde_aspath *, -+ struct filter_extcommunity *, u_int16_t); -+void community_ext_delete(struct rde_aspath *, -+ struct filter_extcommunity *, u_int16_t); -+int community_ext_conv(struct filter_extcommunity *, u_int16_t, -+ u_int64_t *); -+ -+/* rde_decide.c */ -+void prefix_evaluate(struct prefix *, struct rib_entry *); -+ -+/* rde_filter.c */ -+enum filter_actions rde_filter(u_int16_t, struct rde_aspath **, -+ struct filter_head *, struct rde_peer *, -+ struct rde_aspath *, struct bgpd_addr *, u_int8_t, -+ struct rde_peer *, enum directions); -+void rde_apply_set(struct rde_aspath *, struct filter_set_head *, -+ u_int8_t, struct rde_peer *, struct rde_peer *); -+int rde_filter_equal(struct filter_head *, struct filter_head *, -+ struct rde_peer *, enum directions); -+ -+/* rde_prefix.c */ -+#define pt_empty(pt) ((pt)->refcnt == 0) -+#define pt_ref(pt) do { \ -+ ++(pt)->refcnt; \ -+ if ((pt)->refcnt == 0) \ -+ fatalx("pt_ref: overflow"); \ -+} while(0) -+#define pt_unref(pt) do { \ -+ if ((pt)->refcnt == 0) \ -+ fatalx("pt_unref: underflow"); \ -+ --(pt)->refcnt; \ -+} while(0) -+ -+void pt_init(void); -+void pt_shutdown(void); -+void pt_getaddr(struct pt_entry *, struct bgpd_addr *); -+struct pt_entry *pt_fill(struct bgpd_addr *, int); -+struct pt_entry *pt_get(struct bgpd_addr *, int); -+struct pt_entry *pt_add(struct bgpd_addr *, int); -+void pt_remove(struct pt_entry *); -+struct pt_entry *pt_lookup(struct bgpd_addr *); -+int pt_prefix_cmp(const struct pt_entry *, const struct pt_entry *); - - /* rde_rib.c */ - extern u_int16_t rib_size; - extern struct rib *ribs; - --u_int16_t rib_new(int, char *, u_int16_t); -+u_int16_t rib_new(char *, u_int, u_int16_t); - u_int16_t rib_find(char *); - void rib_free(struct rib *); - struct rib_entry *rib_get(struct rib *, struct bgpd_addr *, int); - struct rib_entry *rib_lookup(struct rib *, struct bgpd_addr *); - void rib_dump(struct rib *, void (*)(struct rib_entry *, void *), -- void *, sa_family_t); -+ void *, u_int8_t); - void rib_dump_r(struct rib_context *); - void rib_dump_runner(void); - int rib_dump_pending(void); -@@ -368,6 +433,7 @@ int path_update(struct rib *, struct r - int path_compare(struct rde_aspath *, struct rde_aspath *); - struct rde_aspath *path_lookup(struct rde_aspath *, struct rde_peer *); - void path_remove(struct rde_aspath *); -+void path_remove_stale(struct rde_aspath *, u_int8_t); - void path_destroy(struct rde_aspath *); - int path_empty(struct rde_aspath *); - struct rde_aspath *path_copy(struct rde_aspath *); -@@ -375,8 +441,6 @@ struct rde_aspath *path_get(void); - void path_put(struct rde_aspath *); - - #define PREFIX_SIZE(x) (((x) + 7) / 8 + 1) --int prefix_compare(const struct bgpd_addr *, -- const struct bgpd_addr *, int); - struct prefix *prefix_get(struct rib *, struct rde_peer *, - struct bgpd_addr *, int, u_int32_t); - int prefix_add(struct rib *, struct rde_aspath *, -@@ -385,6 +449,7 @@ void prefix_move(struct rde_aspath *, - int prefix_remove(struct rib *, struct rde_peer *, - struct bgpd_addr *, int, u_int32_t); - int prefix_write(u_char *, int, struct bgpd_addr *, u_int8_t); -+int prefix_writebuf(struct ibuf *, struct bgpd_addr *, u_int8_t); - struct prefix *prefix_bypeer(struct rib_entry *, struct rde_peer *, - u_int32_t); - void prefix_updateall(struct rde_aspath *, enum nexthop_state, -@@ -395,7 +460,7 @@ void prefix_network_clean(struct rde_p - void nexthop_init(u_int32_t); - void nexthop_shutdown(void); - void nexthop_modify(struct rde_aspath *, struct bgpd_addr *, -- enum action_types, sa_family_t); -+ enum action_types, u_int8_t); - void nexthop_link(struct rde_aspath *); - void nexthop_unlink(struct rde_aspath *); - int nexthop_delete(struct nexthop *); -@@ -403,9 +468,6 @@ void nexthop_update(struct kroute_next - struct nexthop *nexthop_get(struct bgpd_addr *); - int nexthop_compare(struct nexthop *, struct nexthop *); - --/* rde_decide.c */ --void prefix_evaluate(struct prefix *, struct rib_entry *); -- - /* rde_update.c */ - void up_init(struct rde_peer *); - void up_down(struct rde_peer *); -@@ -415,49 +477,14 @@ int up_generate(struct rde_peer *, str - void up_generate_updates(struct filter_head *, struct rde_peer *, - struct prefix *, struct prefix *); - void up_generate_default(struct filter_head *, struct rde_peer *, -- sa_family_t); -+ u_int8_t); -+int up_generate_marker(struct rde_peer *, u_int8_t); - int up_dump_prefix(u_char *, int, struct uplist_prefix *, - struct rde_peer *); - int up_dump_attrnlri(u_char *, int, struct rde_peer *); --u_char *up_dump_mp_unreach(u_char *, u_int16_t *, struct rde_peer *); --u_char *up_dump_mp_reach(u_char *, u_int16_t *, struct rde_peer *); -- --/* rde_prefix.c */ --#define pt_empty(pt) ((pt)->refcnt == 0) --#define pt_ref(pt) do { \ -- ++(pt)->refcnt; \ -- if ((pt)->refcnt == 0) \ -- fatalx("pt_ref: overflow"); \ --} while(0) --#define pt_unref(pt) do { \ -- if ((pt)->refcnt == 0) \ -- fatalx("pt_unref: underflow"); \ -- --(pt)->refcnt; \ --} while(0) -- --void pt_init(void); --void pt_shutdown(void); --void pt_getaddr(struct pt_entry *, struct bgpd_addr *); --struct pt_entry *pt_fill(struct bgpd_addr *, int); --struct pt_entry *pt_get(struct bgpd_addr *, int); --struct pt_entry *pt_add(struct bgpd_addr *, int); --void pt_remove(struct pt_entry *); --struct pt_entry *pt_lookup(struct bgpd_addr *); --int pt_prefix_cmp(const struct pt_entry *, const struct pt_entry *); -- -- --/* rde_filter.c */ --enum filter_actions rde_filter(u_int16_t, struct rde_aspath **, -- struct filter_head *, struct rde_peer *, -- struct rde_aspath *, struct bgpd_addr *, u_int8_t, -- struct rde_peer *, enum directions); --void rde_apply_set(struct rde_aspath *, struct filter_set_head *, -- sa_family_t, struct rde_peer *, struct rde_peer *); --int rde_filter_community(struct rde_aspath *, int, int); --int rde_filter_equal(struct filter_head *, struct filter_head *, -- struct rde_peer *, enum directions); -- --/* util.c */ --u_int32_t aspath_extract(const void *, int); -+u_char *up_dump_mp_unreach(u_char *, u_int16_t *, struct rde_peer *, -+ u_int8_t); -+int up_dump_mp_reach(u_char *, u_int16_t *, struct rde_peer *, -+ u_int8_t); - - #endif /* __RDE_H__ */ |