--- bgpd/rde.h.orig 2006-02-10 07:05:09.000000000 +1000 +++ bgpd/rde.h 2007-01-07 14:02:34.000000000 +1000 @@ -100,7 +100,10 @@ ATTR_ORIGINATOR_ID, ATTR_CLUSTER_LIST, ATTR_MP_REACH_NLRI=14, - ATTR_MP_UNREACH_NLRI=15 + ATTR_MP_UNREACH_NLRI=15, + ATTR_NEW_ASPATH=ATTRIBUTE_NEW_AS_PATH, + ATTR_NEW_AGGREGATOR=ATTRIBUTE_NEW_AGGREGATOR + }; /* attribute flags. 4 low order bits reserved */ @@ -257,7 +260,7 @@ void rde_send_pftable_commit(void); void rde_generate_updates(struct prefix *, struct prefix *); -u_int16_t rde_local_as(void); +u_int32_t rde_local_as(void); int rde_noevaluate(void); int rde_decisionflags(void); @@ -272,23 +275,29 @@ void attr_copy(struct rde_aspath *, struct rde_aspath *); int attr_compare(struct rde_aspath *, struct rde_aspath *); void attr_freeall(struct rde_aspath *); +void attr_put(struct attr *) ; +void attr_free(struct rde_aspath *, struct attr *); -int aspath_verify(void *, u_int16_t); +int aspath_verify(void *, u_int16_t, u_int8_t); #define AS_ERR_LEN -1 #define AS_ERR_TYPE -2 #define AS_ERR_BAD -3 void aspath_init(u_int32_t); void aspath_shutdown(void); -struct aspath *aspath_get(void *, u_int16_t); +struct aspath *aspath_get(void *, u_int16_t, int); void aspath_put(struct aspath *); u_char *aspath_dump(struct aspath *); u_int16_t aspath_length(struct aspath *); -u_int16_t aspath_count(const void *, u_int16_t); -u_int16_t aspath_neighbor(struct aspath *); -int aspath_loopfree(struct aspath *, u_int16_t); +u_int16_t aspath_count(const void *, u_int16_t,int); +u_int32_t aspath_neighbor(struct aspath *, int); +int aspath_loopfree(struct aspath *, u_int32_t, int); int aspath_compare(struct aspath *, struct aspath *); -struct aspath *aspath_prepend(struct aspath *, u_int16_t, int); -int aspath_match(struct aspath *, enum as_spec, u_int16_t); +struct aspath *aspath_prepend(struct aspath *, u_int32_t, int); +int aspath_match(struct aspath *, enum as_spec, u_int32_t, int); +struct aspath *aspath_translate(struct aspath *, u_int8_t *, u_int16_t); +u_char *aspath_inflate(void *, u_int16_t, u_int16_t *); +struct aspath *aspath_convert(struct aspath *); + int community_match(void *, u_int16_t, int, int); int community_set(struct rde_aspath *, int, int); void community_delete(struct rde_aspath *, int, int); @@ -377,6 +386,7 @@ struct rde_peer *, enum directions); /* util.c */ -u_int16_t aspath_extract(const void *, int); +u_int32_t aspath_extract(const void *, int, int); +u_int32_t as_extract(const void *, int); #endif /* __RDE_H__ */