From 894b1c66872ceb943e8e1b8a3c121ce7e9cc2fd9 Mon Sep 17 00:00:00 2001 From: "net[shemminger]!shemminger" Date: Wed, 30 Mar 2005 18:19:55 +0000 Subject: [PATCH] Import patch p_mipt (Logical change 1.180) --- tc/m_ipt.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tc/m_ipt.c b/tc/m_ipt.c index 518e4a3c..1d375d31 100644 --- a/tc/m_ipt.c +++ b/tc/m_ipt.c @@ -337,6 +337,17 @@ struct in_addr *dotted_to_addr(const char *dotted) return &addr; } +static void set_revision(char *name, u_int8_t revision) +{ + /* Old kernel sources don't have ".revision" field, + * but we stole a byte from name. */ + name[IPT_FUNCTION_MAXNAMELEN - 2] = '\0'; + name[IPT_FUNCTION_MAXNAMELEN - 1] = revision; +} + +/* + * we may need to check for version mismatch +*/ int build_st(struct iptables_target *target, struct ipt_entry_target *t) { @@ -350,8 +361,11 @@ build_st(struct iptables_target *target, struct ipt_entry_target *t) if (NULL == t) { target->t = fw_calloc(1, size); - target->init(target->t, &nfcache); target->t->u.target_size = size; + + if (target->init != NULL) + target->init(target->t, &nfcache); + set_revision(target->t->u.user.name, target->revision); } else { target->t = t; } -- 2.39.2