diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2006-01-10 16:11:13 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2006-01-10 16:11:13 +0000 |
commit | 979d35bc27826ea04c42887dd10973449c449bd0 (patch) | |
tree | d406062a85f822add1cd5779f661f6e385d50b51 /usr.sbin/bgpd/rde.h | |
parent | 3193574409f162cafce3586f8e32ab5bb7899ee9 (diff) |
The attributes cache broke the set community filterset because community_set()
modified the attribute data directly and corrupted the cache by doing it.
It is no longer allowed to modify attributes via attr_optget() -> change
attr->data. Instead remove the old attribute from the aspath and then add
a new modifed one again. Included in this change is the removal of a "feature"
that allowed only one community per AS. If you had problems to add multiple
communities via filters then this was the problem. Looks good Henning.
Diffstat (limited to 'usr.sbin/bgpd/rde.h')
-rw-r--r-- | usr.sbin/bgpd/rde.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/usr.sbin/bgpd/rde.h b/usr.sbin/bgpd/rde.h index 8e4a67dfcb8..ae049bdee7a 100644 --- a/usr.sbin/bgpd/rde.h +++ b/usr.sbin/bgpd/rde.h @@ -1,4 +1,4 @@ -/* $OpenBSD: rde.h,v 1.80 2006/01/05 16:00:07 claudio Exp $ */ +/* $OpenBSD: rde.h,v 1.81 2006/01/10 16:11:12 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Claudio Jeker <claudio@openbsd.org> and @@ -283,7 +283,7 @@ 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); int community_match(void *, u_int16_t, int, int); -int community_set(struct attr *, int, int); +int community_set(struct rde_aspath *, int, int); /* rde_rib.c */ void path_init(u_int32_t); |