Commit cd17c651 authored by Ondřej Zajíček's avatar Ondřej Zajíček
Browse files

Add format for BGP_AGGREGATOR attribute

parent 25cb9f1d
......@@ -83,7 +83,7 @@ pm_format(struct f_path_mask *p, byte *buf, unsigned int size)
}
if (p->any)
buf += bsprintf(buf, "? ");
buf += bsprintf(buf, "* ");
else
buf += bsprintf(buf, "%u ", p->val);
......
......@@ -111,6 +111,27 @@ bgp_check_aggregator(struct bgp_proto *p, byte *a UNUSED, int len)
return (len == exp_len) ? 0 : 5;
}
static void
bgp_format_aggregator(eattr *a, byte *buf, int buflen UNUSED)
{
struct adata *ad = a->u.ptr;
byte *data = ad->data;
u32 as;
if (bgp_as4_support)
{
as = get_u32(data);
data += 4;
}
else
{
as = get_u16(data);
data += 2;
}
bsprintf(buf, "%d.%d.%d.%d AS%d", data[0], data[1], data[2], data[3], as);
}
static int
bgp_check_cluster_list(struct bgp_proto *p UNUSED, byte *a UNUSED, int len)
{
......@@ -159,7 +180,7 @@ static struct attr_desc bgp_attr_table[] = {
{ "atomic_aggr", 0, BAF_TRANSITIVE, EAF_TYPE_OPAQUE, 1, /* BA_ATOMIC_AGGR */
NULL, NULL },
{ "aggregator", -1, BAF_OPTIONAL | BAF_TRANSITIVE, EAF_TYPE_OPAQUE, 1, /* BA_AGGREGATOR */
bgp_check_aggregator, NULL },
bgp_check_aggregator, bgp_format_aggregator },
{ "community", -1, BAF_OPTIONAL | BAF_TRANSITIVE, EAF_TYPE_INT_SET, 1, /* BA_COMMUNITY */
NULL, NULL },
{ "originator_id", 4, BAF_OPTIONAL, EAF_TYPE_ROUTER_ID, 0, /* BA_ORIGINATOR_ID */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment