libnetfilter_conntrack  1.0.9
filter_dump.c
1 /*
2  * (C) 2005-2012 by Pablo Neira Ayuso <pablo@netfilter.org>
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  */
9 
10 #include "internal/internal.h"
11 #include <libmnl/libmnl.h>
12 
13 static void
14 set_filter_dump_attr_mark(struct nfct_filter_dump *filter_dump,
15  const void *value)
16 {
17  const struct nfct_filter_dump_mark *this = value;
18 
19  filter_dump->mark.val = this->val;
20  filter_dump->mark.mask = this->mask;
21 }
22 
23 static void
24 set_filter_dump_attr_status(struct nfct_filter_dump *filter_dump,
25  const void *value)
26 {
27  const struct nfct_filter_dump_mark *this = value;
28 
29  filter_dump->status.val = this->val;
30  filter_dump->status.mask = this->mask;
31 }
32 
33 static void
34 set_filter_dump_attr_family(struct nfct_filter_dump *filter_dump,
35  const void *value)
36 {
37  filter_dump->l3num = *((uint8_t *)value);
38 }
39 
40 const set_filter_dump_attr set_filter_dump_attr_array[NFCT_FILTER_DUMP_MAX] = {
41  [NFCT_FILTER_DUMP_MARK] = set_filter_dump_attr_mark,
42  [NFCT_FILTER_DUMP_L3NUM] = set_filter_dump_attr_family,
43  [NFCT_FILTER_DUMP_STATUS] = set_filter_dump_attr_status,
44 };
45 
46 void __build_filter_dump(struct nfnlhdr *req, size_t size,
47  const struct nfct_filter_dump *filter_dump)
48 {
49  nfct_nlmsg_build_filter(&req->nlh, filter_dump);
50 }