Date: Fri, 25 Apr 2014 08:48:35 GMT From: Perezhilin Yuri <yuri@rivera.ru> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/188986: net/igmpproxy: kernel structure ip bugfix Message-ID: <201404250848.s3P8mZ5f061416@cgiserv.freebsd.org> Resent-Message-ID: <201404250850.s3P8o2Sb025361@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 188986 >Category: ports >Synopsis: net/igmpproxy: kernel structure ip bugfix >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Fri Apr 25 08:50:01 UTC 2014 >Closed-Date: >Last-Modified: >Originator: Perezhilin Yuri >Release: 10.0-RELEASE >Organization: dnlab.ru >Environment: FreeBSD gw.ps-ax.ru 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014 root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 >Description: In FreeBSD 9.0 was been a lot of changes in struct ip {...}. In version 900044 field ip->ip_len has been changed to carry all length of packet (previosly it was be length without header's length), and all program, which use ip->ip_len, must be corrected. Unfortunately, igmpproxy doesn't update till 2009 year and don't work on FreeBSD 9/10. If you try to use igmpproxy now, /var/log/message you can see : Apr 25 01:13:57 gw igmpproxy[68438]: received packet from 192.168.199.1 shorter (40 bytes) than hdr+data length (24+10216) Apr 25 01:13:58 gw igmpproxy[68438]: received packet from 192.168.199.10 shorter (32 bytes) than hdr+data length (24+8168) Apr 25 01:13:59 gw igmpproxy[68438]: received packet from 192.168.199.1 shorter (40 bytes) than hdr+data length (24+10216) Apr 25 01:14:00 gw igmpproxy[68438]: received packet from 192.168.199.206 shorter (28 bytes) than hdr+data length (20+7148) >How-To-Repeat: Install port igmpproxy, and try to use it. >Fix: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # #<----->patch-src_os-freebsd.h # echo x - patch-src_os-freebsd.h sed 's/^X//' >patch-src_os-freebsd.h << '6c070e7d133b346b84f3533633640131' X--- src/os-freebsd.h.orig<---->2009-10-05 22:07:06.000000000 +0400 X+++ src/os-freebsd.h<->2014-04-25 01:58:41.592218315 +0400 X@@ -14,9 +14,12 @@ X. X static inline u_short ip_data_len(const struct ip *ip) X { X-<---->return ip->ip_len; X+#if __FreeBSD_version >= 900044 X+<---->return ip->ip_len - (ip->ip_hl << 2); X+#else X+ <--->return ip->ip_len; X+#endif X } X- X static inline void ip_set_len(struct ip *ip, u_short len) X { X <---->ip->ip_len = len; 6c070e7d133b346b84f3533633640131 exit >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404250848.s3P8mZ5f061416>