aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/igmpproxy/patches/001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/igmpproxy/patches/001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch')
-rw-r--r--package/network/services/igmpproxy/patches/001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch79
1 files changed, 0 insertions, 79 deletions
diff --git a/package/network/services/igmpproxy/patches/001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch b/package/network/services/igmpproxy/patches/001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch
deleted file mode 100644
index ffe1cf15eb..0000000000
--- a/package/network/services/igmpproxy/patches/001-Send-IGMP-packets-with-IP-Router-Alert-option-RFC-21.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From fed8c3db10bc9d3a1e799a774924c00522595d0c Mon Sep 17 00:00:00 2001
-From: Evgeny Yurchenko <evg.yurch@rogers.com>
-Date: Mon, 4 Jan 2010 05:13:59 +0500
-Subject: [PATCH] Send IGMP packets with IP Router Alert option [RFC 2113] included in IP header
-
----
- src/igmp.c | 17 ++++++++++++-----
- src/igmpproxy.h | 1 +
- 2 files changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/src/igmp.c b/src/igmp.c
-index a0cd27d..b547688 100644
---- a/src/igmp.c
-+++ b/src/igmp.c
-@@ -67,7 +67,7 @@ void initIgmp() {
- * - Checksum (let the kernel fill it in)
- */
- ip->ip_v = IPVERSION;
-- ip->ip_hl = sizeof(struct ip) >> 2;
-+ ip->ip_hl = (sizeof(struct ip) + 4) >> 2; /* +4 for Router Alert option */
- ip->ip_tos = 0xc0; /* Internet Control */
- ip->ip_ttl = MAXTTL; /* applies to unicasts only */
- ip->ip_p = IPPROTO_IGMP;
-@@ -213,7 +213,7 @@ void buildIgmp(uint32_t src, uint32_t dst, int type, int code, uint32_t group, i
- ip = (struct ip *)send_buf;
- ip->ip_src.s_addr = src;
- ip->ip_dst.s_addr = dst;
-- ip_set_len(ip, MIN_IP_HEADER_LEN + IGMP_MINLEN + datalen);
-+ ip_set_len(ip, IP_HEADER_RAOPT_LEN + IGMP_MINLEN + datalen);
-
- if (IN_MULTICAST(ntohl(dst))) {
- ip->ip_ttl = curttl;
-@@ -221,13 +221,20 @@ void buildIgmp(uint32_t src, uint32_t dst, int type, int code, uint32_t group, i
- ip->ip_ttl = MAXTTL;
- }
-
-- igmp = (struct igmp *)(send_buf + MIN_IP_HEADER_LEN);
-+ /* Add Router Alert option */
-+ ((u_char*)send_buf+MIN_IP_HEADER_LEN)[0] = IPOPT_RA;
-+ ((u_char*)send_buf+MIN_IP_HEADER_LEN)[1] = 0x04;
-+ ((u_char*)send_buf+MIN_IP_HEADER_LEN)[2] = 0x00;
-+ ((u_char*)send_buf+MIN_IP_HEADER_LEN)[3] = 0x00;
-+
-+ igmp = (struct igmp *)(send_buf + IP_HEADER_RAOPT_LEN);
- igmp->igmp_type = type;
- igmp->igmp_code = code;
- igmp->igmp_group.s_addr = group;
- igmp->igmp_cksum = 0;
- igmp->igmp_cksum = inetChksum((u_short *)igmp,
-- IGMP_MINLEN + datalen);
-+ IP_HEADER_RAOPT_LEN + datalen);
-+
- }
-
- /*
-@@ -257,7 +264,7 @@ void sendIgmp(uint32_t src, uint32_t dst, int type, int code, uint32_t group, in
- #endif
- sdst.sin_addr.s_addr = dst;
- if (sendto(MRouterFD, send_buf,
-- MIN_IP_HEADER_LEN + IGMP_MINLEN + datalen, 0,
-+ IP_HEADER_RAOPT_LEN + IGMP_MINLEN + datalen, 0,
- (struct sockaddr *)&sdst, sizeof(sdst)) < 0) {
- if (errno == ENETDOWN)
- my_log(LOG_ERR, errno, "Sender VIF was down.");
-diff --git a/src/igmpproxy.h b/src/igmpproxy.h
-index 0de7791..4df8a79 100644
---- a/src/igmpproxy.h
-+++ b/src/igmpproxy.h
-@@ -64,6 +64,7 @@
- #define MAX_IP_PACKET_LEN 576
- #define MIN_IP_HEADER_LEN 20
- #define MAX_IP_HEADER_LEN 60
-+#define IP_HEADER_RAOPT_LEN 24
-
- #define MAX_MC_VIFS 32 // !!! check this const in the specific includes
-
---
-1.7.2.5
-