]> granicus.if.org Git - ipset/commitdiff
netfilter: ipset: deinline ip_set_put_extensions()
authorDenys Vlasenko <dvlasenk@redhat.com>
Sat, 13 Jun 2015 19:34:08 +0000 (21:34 +0200)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Sat, 13 Jun 2015 19:34:08 +0000 (21:34 +0200)
n x86 allyesconfig build:
The function compiles to 489 bytes of machine code.
It has 25 callsites.

    text    data       bss       dec     hex filename
82441375 22255384 20627456 125324215 7784bb7 vmlinux.before
82434909 22255384 20627456 125317749 7783275 vmlinux

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
CC: Eric W. Biederman <ebiederm@xmission.com>
CC: David S. Miller <davem@davemloft.net>
CC: Jan Engelhardt <jengelh@medozas.de>
CC: Jiri Pirko <jpirko@redhat.com>
CC: linux-kernel@vger.kernel.org
CC: netdev@vger.kernel.org
CC: netfilter-devel@vger.kernel.org
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
kernel/include/linux/netfilter/ipset/ip_set.h
kernel/net/netfilter/ipset/ip_set_core.c

index 3f5816bb18650caeea1501330580b37ab6fa4dcc..30f8ba8e918833ef944c181e26591071dcab3616 100644 (file)
@@ -328,6 +328,8 @@ extern size_t ip_set_elem_len(struct ip_set *set, struct nlattr *tb[],
                              size_t len);
 extern int ip_set_get_extensions(struct ip_set *set, struct nlattr *tb[],
                                 struct ip_set_ext *ext);
+extern int ip_set_put_extensions(struct sk_buff *skb, const struct ip_set *set,
+                                const void *e, bool active);
 
 static inline int
 ip_set_get_hostipaddr4(struct nlattr *nla, u32 *ipaddr)
@@ -447,29 +449,6 @@ bitmap_bytes(u32 a, u32 b)
 #include <linux/netfilter/ipset/ip_set_counter.h>
 #include <linux/netfilter/ipset/ip_set_skbinfo.h>
 
-static inline int
-ip_set_put_extensions(struct sk_buff *skb, const struct ip_set *set,
-                     const void *e, bool active)
-{
-       if (SET_WITH_TIMEOUT(set)) {
-               unsigned long *timeout = ext_timeout(e, set);
-
-               if (nla_put_net32(skb, IPSET_ATTR_TIMEOUT,
-                       htonl(active ? ip_set_timeout_get(timeout)
-                             : *timeout)))
-                       return -EMSGSIZE;
-       }
-       if (SET_WITH_COUNTER(set) &&
-           ip_set_put_counter(skb, ext_counter(e, set)))
-               return -EMSGSIZE;
-       if (SET_WITH_COMMENT(set) &&
-           ip_set_put_comment(skb, ext_comment(e, set)))
-               return -EMSGSIZE;
-       if (SET_WITH_SKBINFO(set) &&
-           ip_set_put_skbinfo(skb, ext_skbinfo(e, set)))
-               return -EMSGSIZE;
-       return 0;
-}
 
 #define IP_SET_INIT_KEXT(skb, opt, set)                        \
        { .bytes = (skb)->len, .packets = 1,            \
index 3fda885b3f7f6f86054d8f00bf38f0d61d2099cc..162469852ee8920ff5002831ad655b667ad0b939 100644 (file)
@@ -448,6 +448,31 @@ ip_set_get_extensions(struct ip_set *set, struct nlattr *tb[],
 }
 EXPORT_SYMBOL_GPL(ip_set_get_extensions);
 
+int
+ip_set_put_extensions(struct sk_buff *skb, const struct ip_set *set,
+                     const void *e, bool active)
+{
+       if (SET_WITH_TIMEOUT(set)) {
+               unsigned long *timeout = ext_timeout(e, set);
+
+               if (nla_put_net32(skb, IPSET_ATTR_TIMEOUT,
+                       htonl(active ? ip_set_timeout_get(timeout)
+                             : *timeout)))
+                       return -EMSGSIZE;
+       }
+       if (SET_WITH_COUNTER(set) &&
+           ip_set_put_counter(skb, ext_counter(e, set)))
+               return -EMSGSIZE;
+       if (SET_WITH_COMMENT(set) &&
+           ip_set_put_comment(skb, ext_comment(e, set)))
+               return -EMSGSIZE;
+       if (SET_WITH_SKBINFO(set) &&
+           ip_set_put_skbinfo(skb, ext_skbinfo(e, set)))
+               return -EMSGSIZE;
+       return 0;
+}
+EXPORT_SYMBOL_GPL(ip_set_put_extensions);
+
 /* Creating/destroying/renaming/swapping affect the existence and
  * the properties of a set. All of these can be executed from userspace
  * only and serialized by the nfnl mutex indirectly from nfnetlink.