Move and rename copy_filterset to rde_filter.c as filterset_copy.
This way it matches the other filterset_* functions.

OK?
-- 
:wq Claudio

Index: bgpd.h
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v
retrieving revision 1.400
diff -u -p -r1.400 bgpd.h
--- bgpd.h      12 Feb 2020 10:33:56 -0000      1.400
+++ bgpd.h      14 Feb 2020 12:16:43 -0000
@@ -1182,8 +1182,6 @@ void              free_prefixtree(struct prefixset_t
 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_m
 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 */
Index: config.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/config.c,v
retrieving revision 1.94
diff -u -p -r1.94 config.c
--- config.c    28 Jan 2020 15:45:46 -0000      1.94
+++ config.c    14 Feb 2020 12:21:44 -0000
@@ -496,22 +496,6 @@ prepare_listeners(struct bgpd_config *co
 }
 
 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);
                        }
Index: parse.y
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/parse.y,v
retrieving revision 1.403
diff -u -p -r1.403 parse.y
--- parse.y     24 Jan 2020 05:44:05 -0000      1.403
+++ parse.y     14 Feb 2020 12:21:59 -0000
@@ -4076,8 +4076,7 @@ expand_rule(struct filter_rule *rule, st
                                        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,
Index: rde_filter.c
===================================================================
RCS file: /cvs/src/usr.sbin/bgpd/rde_filter.c,v
retrieving revision 1.122
diff -u -p -r1.122 rde_filter.c
--- rde_filter.c        13 Aug 2019 12:16:20 -0000      1.122
+++ rde_filter.c        14 Feb 2020 12:21:28 -0000
@@ -502,6 +502,10 @@ filterset_cmp(struct filter_set *a, stru
        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)
 {
@@ -509,6 +513,26 @@ filterset_move(struct filter_set_head *s
        if (source == NULL)
                return;
        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

Reply via email to