diff options
author | claudio <claudio@openbsd.org> | 2020-02-14 13:54:31 +0000 |
---|---|---|
committer | claudio <claudio@openbsd.org> | 2020-02-14 13:54:31 +0000 |
commit | dcd4a44d9f2ed23acb82563be8e0553bbfab2906 (patch) | |
tree | 6242b58f8825f30bafe87b7e4bc0be5f4c419287 /usr.sbin/bgpd | |
parent | Fix host(1) when providing a server to query. (diff) | |
download | wireguard-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.h | 12 | ||||
-rw-r--r-- | usr.sbin/bgpd/config.c | 21 | ||||
-rw-r--r-- | usr.sbin/bgpd/parse.y | 5 | ||||
-rw-r--r-- | usr.sbin/bgpd/rde_filter.c | 26 |
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) { |