[PATCH] check_proto for ip_conntrack_protocol_register

Brad Chapman kakadu_croc@yahoo.com
Fri, 19 Apr 2002 15:52:05 -0700 (PDT)


--0-777240201-1019256725=:90025
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Mr. Harald,

      Here's a patch to add the check_proto() facility to
ip_conntrack_protocol_register(). The comment at the top of that function
talked about checking the *proto argument for missing functions and adding
pointers to the generic protocol entry for it. This patch does that.
I'm not expecting this patch to be applied anytime soon, since it's not really
needed ;)

      Patch is enclosed and MIME'd.

Brad

<snip>

--- ip_conntrack_standalone.c.2	Fri Apr 19 17:21:32 2002
+++ ip_conntrack_standalone.c	Fri Apr 19 17:55:32 2002
@@ -389,8 +389,6 @@
 	return ret;
 }
 
-/* FIXME: Allow NULL functions and sub in pointers to generic for
-   them. --RR */
 int ip_conntrack_protocol_register(struct ip_conntrack_protocol *proto)
 {
 	int ret = 0;
@@ -405,6 +403,8 @@
 		}
 	}
 
+	/* See linux/netfilter_ipv4/ip_conntrack_protocol.h -- BC */
+	check_proto(proto);
 	list_prepend(&protocol_list, proto);
 	MOD_INC_USE_COUNT;

--- ip_conntrack_protocol.h.orig	Fri Apr 19 17:48:00 2002
+++ ip_conntrack_protocol.h	Fri Apr 19 17:50:50 2002
@@ -61,5 +61,26 @@
 extern struct ip_conntrack_protocol ip_conntrack_protocol_tcp;
 extern struct ip_conntrack_protocol ip_conntrack_protocol_udp;
 extern struct ip_conntrack_protocol ip_conntrack_protocol_icmp;
+
+extern struct ip_conntrack_protocol ip_conntrack_generic_protocol;
+#define GENERIC_PKT_TO_TUPLE	    ip_conntrack_generic_protocol.pkt_to_tuple
+#define GENERIC_INVERT_TUPLE	    ip_conntrack_generic_protocol.invert_tuple
+#define GENERIC_PRINT_TUPLE	    ip_conntrack_generic_protocol.print_tuple
+#define GENERIC_PRINT_CONNTRACK	    ip_conntrack_generic_protocol.print_conntrack
+#define GENERIC_PACKET		    ip_conntrack_generic_protocol.packet
+#define GENERIC_NEW		    ip_conntrack_generic_protocol.new
+#define GENERIC_EXP_MATCHES_PKT	    ip_conntrack_generic_protocol.exp_matches_pkt
+
+extern __inline__ void check_proto(struct ip_conntrack_protocol *proto)
+{
+	if (!proto->pkt_to_tuple)	proto->pkt_to_tuple = GENERIC_PKT_TO_TUPLE;
+	if (!proto->invert_tuple)	proto->invert_tuple = GENERIC_INVER_TUPLE;
+	if (!proto->print_tuple)	proto->print_tuple = GENERIC_PRINT_TUPLE;
+	if (!proto->print_conntrack)	proto->print_conntrack = GENERIC_PRINT_CONNTRACK;
+	if (!proto->packet)		proto->packet = GENERIC_PACKET;
+	if (!proto->new)		proto->new = GENERIC_NEW;
+	if (!proto->exp_matches_pkt)	proto->exp_matches_pkt = GENERIC_EXP_MATCHES_PKT;
+}
+
 extern int ip_conntrack_protocol_tcp_init(void);
 #endif /*_IP_CONNTRACK_PROTOCOL_H*/

</snip>

=====
Brad Chapman

Permanent e-mail: kakadu_croc@yahoo.com
Current e-mail: kakadu@adelphia.net
Alternate e-mail: kakadu@netscape.net

__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/
--0-777240201-1019256725=:90025
Content-Type: application/octet-stream; name="check_proto.patch"
Content-Transfer-Encoding: base64
Content-Description: check_proto.patch
Content-Disposition: attachment; filename="check_proto.patch"

LS0tIGlwX2Nvbm50cmFja19zdGFuZGFsb25lLmMuMglGcmkgQXByIDE5IDE3
OjIxOjMyIDIwMDIKKysrIGlwX2Nvbm50cmFja19zdGFuZGFsb25lLmMJRnJp
IEFwciAxOSAxNzo1NTozMiAyMDAyCkBAIC0zODksOCArMzg5LDYgQEAKIAly
ZXR1cm4gcmV0OwogfQogCi0vKiBGSVhNRTogQWxsb3cgTlVMTCBmdW5jdGlv
bnMgYW5kIHN1YiBpbiBwb2ludGVycyB0byBnZW5lcmljIGZvcgotICAgdGhl
bS4gLS1SUiAqLwogaW50IGlwX2Nvbm50cmFja19wcm90b2NvbF9yZWdpc3Rl
cihzdHJ1Y3QgaXBfY29ubnRyYWNrX3Byb3RvY29sICpwcm90bykKIHsKIAlp
bnQgcmV0ID0gMDsKQEAgLTQwNSw2ICs0MDMsOCBAQAogCQl9CiAJfQogCisJ
LyogU2VlIGxpbnV4L25ldGZpbHRlcl9pcHY0L2lwX2Nvbm50cmFja19wcm90
b2NvbC5oIC0tIEJDICovCisJY2hlY2tfcHJvdG8ocHJvdG8pOwogCWxpc3Rf
cHJlcGVuZCgmcHJvdG9jb2xfbGlzdCwgcHJvdG8pOwogCU1PRF9JTkNfVVNF
X0NPVU5UOwogCg==

--0-777240201-1019256725=:90025
Content-Type: application/octet-stream; name="check_proto.patch.2"
Content-Transfer-Encoding: base64
Content-Description: check_proto.patch.2
Content-Disposition: attachment; filename="check_proto.patch.2"

LS0tIGlwX2Nvbm50cmFja19wcm90b2NvbC5oLm9yaWcJRnJpIEFwciAxOSAx
Nzo0ODowMCAyMDAyCisrKyBpcF9jb25udHJhY2tfcHJvdG9jb2wuaAlGcmkg
QXByIDE5IDE3OjUwOjUwIDIwMDIKQEAgLTYxLDUgKzYxLDI2IEBACiBleHRl
cm4gc3RydWN0IGlwX2Nvbm50cmFja19wcm90b2NvbCBpcF9jb25udHJhY2tf
cHJvdG9jb2xfdGNwOwogZXh0ZXJuIHN0cnVjdCBpcF9jb25udHJhY2tfcHJv
dG9jb2wgaXBfY29ubnRyYWNrX3Byb3RvY29sX3VkcDsKIGV4dGVybiBzdHJ1
Y3QgaXBfY29ubnRyYWNrX3Byb3RvY29sIGlwX2Nvbm50cmFja19wcm90b2Nv
bF9pY21wOworCitleHRlcm4gc3RydWN0IGlwX2Nvbm50cmFja19wcm90b2Nv
bCBpcF9jb25udHJhY2tfZ2VuZXJpY19wcm90b2NvbDsKKyNkZWZpbmUgR0VO
RVJJQ19QS1RfVE9fVFVQTEUJICAgIGlwX2Nvbm50cmFja19nZW5lcmljX3By
b3RvY29sLnBrdF90b190dXBsZQorI2RlZmluZSBHRU5FUklDX0lOVkVSVF9U
VVBMRQkgICAgaXBfY29ubnRyYWNrX2dlbmVyaWNfcHJvdG9jb2wuaW52ZXJ0
X3R1cGxlCisjZGVmaW5lIEdFTkVSSUNfUFJJTlRfVFVQTEUJICAgIGlwX2Nv
bm50cmFja19nZW5lcmljX3Byb3RvY29sLnByaW50X3R1cGxlCisjZGVmaW5l
IEdFTkVSSUNfUFJJTlRfQ09OTlRSQUNLCSAgICBpcF9jb25udHJhY2tfZ2Vu
ZXJpY19wcm90b2NvbC5wcmludF9jb25udHJhY2sKKyNkZWZpbmUgR0VORVJJ
Q19QQUNLRVQJCSAgICBpcF9jb25udHJhY2tfZ2VuZXJpY19wcm90b2NvbC5w
YWNrZXQKKyNkZWZpbmUgR0VORVJJQ19ORVcJCSAgICBpcF9jb25udHJhY2tf
Z2VuZXJpY19wcm90b2NvbC5uZXcKKyNkZWZpbmUgR0VORVJJQ19FWFBfTUFU
Q0hFU19QS1QJICAgIGlwX2Nvbm50cmFja19nZW5lcmljX3Byb3RvY29sLmV4
cF9tYXRjaGVzX3BrdAorCitleHRlcm4gX19pbmxpbmVfXyB2b2lkIGNoZWNr
X3Byb3RvKHN0cnVjdCBpcF9jb25udHJhY2tfcHJvdG9jb2wgKnByb3RvKQor
eworCWlmICghcHJvdG8tPnBrdF90b190dXBsZSkJcHJvdG8tPnBrdF90b190
dXBsZSA9IEdFTkVSSUNfUEtUX1RPX1RVUExFOworCWlmICghcHJvdG8tPmlu
dmVydF90dXBsZSkJcHJvdG8tPmludmVydF90dXBsZSA9IEdFTkVSSUNfSU5W
RVJfVFVQTEU7CisJaWYgKCFwcm90by0+cHJpbnRfdHVwbGUpCXByb3RvLT5w
cmludF90dXBsZSA9IEdFTkVSSUNfUFJJTlRfVFVQTEU7CisJaWYgKCFwcm90
by0+cHJpbnRfY29ubnRyYWNrKQlwcm90by0+cHJpbnRfY29ubnRyYWNrID0g
R0VORVJJQ19QUklOVF9DT05OVFJBQ0s7CisJaWYgKCFwcm90by0+cGFja2V0
KQkJcHJvdG8tPnBhY2tldCA9IEdFTkVSSUNfUEFDS0VUOworCWlmICghcHJv
dG8tPm5ldykJCXByb3RvLT5uZXcgPSBHRU5FUklDX05FVzsKKwlpZiAoIXBy
b3RvLT5leHBfbWF0Y2hlc19wa3QpCXByb3RvLT5leHBfbWF0Y2hlc19wa3Qg
PSBHRU5FUklDX0VYUF9NQVRDSEVTX1BLVDsKK30KKwogZXh0ZXJuIGludCBp
cF9jb25udHJhY2tfcHJvdG9jb2xfdGNwX2luaXQodm9pZCk7CiAjZW5kaWYg
LypfSVBfQ09OTlRSQUNLX1BST1RPQ09MX0gqLwo=

--0-777240201-1019256725=:90025--