IPEXP_NEW,              /* new expectation */
 };
 
+/* expectation flags */
+#define NF_CT_EXPECT_PERMANENT         0x1
+#define NF_CT_EXPECT_INACTIVE          0x2
+
 #ifdef __KERNEL__
 struct ip_conntrack_stat {
        unsigned int searched;
 
 
 #define NF_CT_EXPECT_CLASS_DEFAULT     0
 
-#define NF_CT_EXPECT_PERMANENT 0x1
-#define NF_CT_EXPECT_INACTIVE  0x2
-
 int nf_conntrack_expect_init(struct net *net);
 void nf_conntrack_expect_fini(struct net *net);
 
 
 
        NLA_PUT_BE32(skb, CTA_EXPECT_TIMEOUT, htonl(timeout));
        NLA_PUT_BE32(skb, CTA_EXPECT_ID, htonl((unsigned long)exp));
+       NLA_PUT_BE32(skb, CTA_EXPECT_FLAGS, htonl(exp->flags));
        helper = rcu_dereference(nfct_help(master)->helper);
        if (helper)
                NLA_PUT_STRING(skb, CTA_EXPECT_HELP_NAME, helper->name);
        [CTA_EXPECT_ID]         = { .type = NLA_U32 },
        [CTA_EXPECT_HELP_NAME]  = { .type = NLA_NUL_STRING },
        [CTA_EXPECT_ZONE]       = { .type = NLA_U16 },
+       [CTA_EXPECT_FLAGS]      = { .type = NLA_U32 },
 };
 
 static int
                goto out;
        }
 
+       if (cda[CTA_EXPECT_FLAGS])
+               exp->flags = ntohl(nla_get_be32(cda[CTA_EXPECT_FLAGS]));
+       else
+               exp->flags = 0;
+
        exp->class = 0;
        exp->expectfn = NULL;
-       exp->flags = 0;
        exp->master = ct;
        exp->helper = NULL;
        memcpy(&exp->tuple, &tuple, sizeof(struct nf_conntrack_tuple));