summaryrefslogtreecommitdiffstats
path: root/usr.sbin/bgpd
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2020-02-14 13:54:31 +0000
committerclaudio <claudio@openbsd.org>2020-02-14 13:54:31 +0000
commitdcd4a44d9f2ed23acb82563be8e0553bbfab2906 (patch)
tree6242b58f8825f30bafe87b7e4bc0be5f4c419287 /usr.sbin/bgpd
parentFix host(1) when providing a server to query. (diff)
downloadwireguard-openbsd-dcd4a44d9f2ed23acb82563be8e0553bbfab2906.tar.xz
wireguard-openbsd-dcd4a44d9f2ed23acb82563be8e0553bbfab2906.zip
Rename copy_filterset() to filterset_copy() and move it to rde_filter.c
where functions like filterset_move() live. Also initialize the dest TAILQ in filterset_copy() as it is done in filterset_move(). OK benno@ phessler@
Diffstat (limited to 'usr.sbin/bgpd')
-rw-r--r--usr.sbin/bgpd/bgpd.h12
-rw-r--r--usr.sbin/bgpd/config.c21
-rw-r--r--usr.sbin/bgpd/parse.y5
-rw-r--r--usr.sbin/bgpd/rde_filter.c26
4 files changed, 34 insertions, 30 deletions
diff --git a/usr.sbin/bgpd/bgpd.h b/usr.sbin/bgpd/bgpd.h
index f6be46f757f..cdcc0bddc71 100644
--- a/usr.sbin/bgpd/bgpd.h
+++ b/usr.sbin/bgpd/bgpd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: bgpd.h,v 1.400 2020/02/12 10:33:56 claudio Exp $ */
+/* $OpenBSD: bgpd.h,v 1.401 2020/02/14 13:54:31 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -1182,8 +1182,6 @@ void free_prefixtree(struct prefixset_tree *);
void filterlist_free(struct filter_head *);
int host(const char *, struct bgpd_addr *, u_int8_t *);
u_int32_t get_bgpid(void);
-void copy_filterset(struct filter_set_head *,
- struct filter_set_head *);
void expand_networks(struct bgpd_config *);
int prefixset_cmp(struct prefixset_item *, struct prefixset_item *);
RB_PROTOTYPE(prefixset_tree, prefixset_item, entry, prefixset_cmp);
@@ -1261,10 +1259,10 @@ int pftable_addr_remove(struct pftable_msg *);
int pftable_commit(void);
/* rde_filter.c */
-void filterset_free(struct filter_set_head *);
-int filterset_cmp(struct filter_set *, struct filter_set *);
-void filterset_move(struct filter_set_head *,
- struct filter_set_head *);
+void filterset_free(struct filter_set_head *);
+int filterset_cmp(struct filter_set *, struct filter_set *);
+void filterset_move(struct filter_set_head *, struct filter_set_head *);
+void filterset_copy(struct filter_set_head *, struct filter_set_head *);
const char *filterset_name(enum action_types);
/* rde_sets.c */
diff --git a/usr.sbin/bgpd/config.c b/usr.sbin/bgpd/config.c
index d72352407db..6656d5337ab 100644
--- a/usr.sbin/bgpd/config.c
+++ b/usr.sbin/bgpd/config.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: config.c,v 1.94 2020/01/28 15:45:46 bket Exp $ */
+/* $OpenBSD: config.c,v 1.95 2020/02/14 13:54:31 claudio Exp $ */
/*
* Copyright (c) 2003, 2004, 2005 Henning Brauer <henning@openbsd.org>
@@ -496,22 +496,6 @@ prepare_listeners(struct bgpd_config *conf)
}
void
-copy_filterset(struct filter_set_head *source, struct filter_set_head *dest)
-{
- struct filter_set *s, *t;
-
- if (source == NULL)
- return;
-
- TAILQ_FOREACH(s, source, entry) {
- if ((t = malloc(sizeof(struct filter_set))) == NULL)
- fatal(NULL);
- memcpy(t, s, sizeof(struct filter_set));
- TAILQ_INSERT_TAIL(dest, t, entry);
- }
-}
-
-void
expand_networks(struct bgpd_config *c)
{
struct network *n, *m, *tmp;
@@ -533,8 +517,7 @@ expand_networks(struct bgpd_config *c)
memcpy(&m->net.prefix, &psi->p.addr,
sizeof(m->net.prefix));
m->net.prefixlen = psi->p.len;
- TAILQ_INIT(&m->net.attrset);
- copy_filterset(&n->net.attrset,
+ filterset_copy(&n->net.attrset,
&m->net.attrset);
TAILQ_INSERT_TAIL(nw, m, entry);
}
diff --git a/usr.sbin/bgpd/parse.y b/usr.sbin/bgpd/parse.y
index d7f5da990c9..93aa40da1f5 100644
--- a/usr.sbin/bgpd/parse.y
+++ b/usr.sbin/bgpd/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.403 2020/01/24 05:44:05 claudio Exp $ */
+/* $OpenBSD: parse.y,v 1.404 2020/02/14 13:54:31 claudio Exp $ */
/*
* Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -4076,8 +4076,7 @@ expand_rule(struct filter_rule *rule, struct filter_rib_l *rib,
memcpy(r, rule, sizeof(struct filter_rule));
memcpy(&r->match, match,
sizeof(struct filter_match));
- TAILQ_INIT(&r->set);
- copy_filterset(set, &r->set);
+ filterset_copy(set, &r->set);
if (rb != NULL)
strlcpy(r->rib, rb->name,
diff --git a/usr.sbin/bgpd/rde_filter.c b/usr.sbin/bgpd/rde_filter.c
index d4327a77ddd..76705cc889a 100644
--- a/usr.sbin/bgpd/rde_filter.c
+++ b/usr.sbin/bgpd/rde_filter.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde_filter.c,v 1.122 2019/08/13 12:16:20 claudio Exp $ */
+/* $OpenBSD: rde_filter.c,v 1.123 2020/02/14 13:54:31 claudio Exp $ */
/*
* Copyright (c) 2004 Claudio Jeker <claudio@openbsd.org>
@@ -502,6 +502,10 @@ filterset_cmp(struct filter_set *a, struct filter_set *b)
return (0);
}
+/*
+ * move filterset from source to dest. dest will be initialized first.
+ * After the move source is an empty list.
+ */
void
filterset_move(struct filter_set_head *source, struct filter_set_head *dest)
{
@@ -511,6 +515,26 @@ filterset_move(struct filter_set_head *source, struct filter_set_head *dest)
TAILQ_CONCAT(dest, source, entry);
}
+/*
+ * copy filterset from source to dest. dest will be initialized first.
+ */
+void
+filterset_copy(struct filter_set_head *source, struct filter_set_head *dest)
+{
+ struct filter_set *s, *t;
+
+ TAILQ_INIT(dest);
+ if (source == NULL)
+ return;
+
+ TAILQ_FOREACH(s, source, entry) {
+ if ((t = malloc(sizeof(struct filter_set))) == NULL)
+ fatal(NULL);
+ memcpy(t, s, sizeof(struct filter_set));
+ TAILQ_INSERT_TAIL(dest, t, entry);
+ }
+}
+
int
filterset_equal(struct filter_set_head *ah, struct filter_set_head *bh)
{