]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/netfilter/nft_cmp.c
netfilter: nf_tables: expression ops overloading
[karo-tx-linux.git] / net / netfilter / nft_cmp.c
index e734d670120a445cecd75979221447ca8b9987d9..2c9d5fef2e63868fe74913b3c8b0731a925cf61c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008 Patrick McHardy <kaber@trash.net>
+ * Copyright (c) 2008-2009 Patrick McHardy <kaber@trash.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -124,23 +124,29 @@ nla_put_failure:
        return -1;
 }
 
-static struct nft_expr_ops nft_cmp_ops __read_mostly = {
-       .name           = "cmp",
+static struct nft_expr_type nft_cmp_type;
+static const struct nft_expr_ops nft_cmp_ops = {
+       .type           = &nft_cmp_type,
        .size           = NFT_EXPR_SIZE(sizeof(struct nft_cmp_expr)),
-       .owner          = THIS_MODULE,
        .eval           = nft_cmp_eval,
        .init           = nft_cmp_init,
        .dump           = nft_cmp_dump,
+};
+
+static struct nft_expr_type nft_cmp_type __read_mostly = {
+       .name           = "cmp",
+       .ops            = &nft_cmp_ops,
        .policy         = nft_cmp_policy,
        .maxattr        = NFTA_CMP_MAX,
+       .owner          = THIS_MODULE,
 };
 
 int __init nft_cmp_module_init(void)
 {
-       return nft_register_expr(&nft_cmp_ops);
+       return nft_register_expr(&nft_cmp_type);
 }
 
 void nft_cmp_module_exit(void)
 {
-       nft_unregister_expr(&nft_cmp_ops);
+       nft_unregister_expr(&nft_cmp_type);
 }