--- bgpd/bgpd.h.orig 2007-01-11 15:02:39.000000000 +1000 +++ bgpd/bgpd.h 2007-01-07 14:02:34.000000000 +1000 @@ -148,7 +148,7 @@ int log; u_int32_t bgpid; u_int32_t clusterid; - u_int16_t as; + u_int32_t as; u_int16_t holdtime; u_int16_t min_holdtime; }; @@ -206,6 +206,7 @@ u_int8_t mp_v4; /* multiprotocol extensions, RFC 2858 */ u_int8_t mp_v6; u_int8_t refresh; /* route refresh, RFC 2918 */ + u_int8_t as_4bytes; /* 4 byte AS capability */ }; struct peer_config { @@ -222,7 +223,7 @@ enum announce_type announce_type; enum enforce_as enforce_as; enum reconf_action reconf_action; - u_int16_t remote_as; + u_int32_t remote_as; u_int16_t holdtime; u_int16_t min_holdtime; u_int8_t template; @@ -236,6 +237,7 @@ u_int8_t reflector_client; u_int8_t softreconfig_in; u_int8_t softreconfig_out; + u_int8_t as_4bytes; /* 1 = 4byte as capability, 0 = 2byte */ }; struct network_config { @@ -251,6 +253,10 @@ TAILQ_ENTRY(network) entry; }; + +/*4BYTE 4-byte AS capability - AS_TRANS for 4-byte AS value placeholder */ +#define AS_TRANS 23456 + /* ipc messages */ #define IMSG_HEADER_SIZE sizeof(struct imsg_hdr) @@ -367,7 +373,8 @@ ERR_UPD_NEXTHOP, ERR_UPD_OPTATTR, ERR_UPD_NETWORK, - ERR_UPD_ASPATH + ERR_UPD_ASPATH, + ERR_UPD_NEWASPATH }; enum suberr_cease { @@ -493,7 +500,7 @@ struct filter_as { enum as_spec type; - u_int16_t as; + u_int32_t as; }; enum filter_actions { @@ -541,6 +548,30 @@ #define COMMUNITY_NO_EXPSUBCONFED 0xff03 #define COMMUNITY_NO_PEER 0xff04 /* rfc3765 */ +/* BGP Path Attributes */ +#define ATTRIBUTE_ORIGIN 1 +#define ATTRIBUTE_AS_PATH 2 +#define ATTRIBUTE_NEXT_HOP 3 +#define ATTRIBUTE_MULTI_EXIT_DISC 4 +#define ATTRIBUTE_LOCAL_PREF 5 +#define ATTRIBUTE_ATOMIC_AGGREGATE 6 +#define ATTRIBUTE_AGGREGATOR 7 +#define ATTRIBUTE_COMMUNITY 8 +#define ATTRIBUTE_ORIGINATOR_ID 9 +#define ATTRIBUTE_CLUSTER_LIST 10 +#define ATTRIBUTE_DPA 11 +#define ATTRIBUTE_ADVERTISER 12 +#define ATTRIBUTE_RCID_PATH_CLUSTER_ID 13 +#define ATTRIBUTE_MP_REACH_NLRI 14 +#define ATTRIBUTE_MP_UNREACH_NLRI 15 +#define ATTRIBUTE_EXTENDED_COMMUNITIES 16 +#define ATTRIBUTE_NEW_AS_PATH 17 +#define ATTRIBUTE_NEW_AGGREGATOR 18 +#define ATTRIBUTE_SSA 19 +#define ATTRIBUTE_CONNECTOR 20 +#define ATTRIBUTE_AS_PATHLIMIT 21 + + struct filter_prefix { struct bgpd_addr addr; u_int8_t len; @@ -554,7 +585,7 @@ }; struct filter_community { - int as; + u_int32_t as; int type; }; @@ -768,8 +799,8 @@ const char *log_addr(const struct bgpd_addr *); const char *log_in6addr(const struct in6_addr *); const char * log_sockaddr(struct sockaddr *); -int aspath_snprint(char *, size_t, void *, u_int16_t); -int aspath_asprint(char **, void *, u_int16_t); -size_t aspath_strlen(void *, u_int16_t); +int aspath_snprint(char *, size_t, void *, u_int16_t, int); +int aspath_asprint(char **, void *, u_int16_t, int); +size_t aspath_strlen(void *, u_int16_t, int); #endif /* __BGPD_H__ */