From df7579ea850a95a74ec17c7579f03fe3ea109add Mon Sep 17 00:00:00 2001 From: Shibby Date: Fri, 16 May 2014 11:12:03 +0200 Subject: [PATCH] Comcast Fixes: DSCP and buffer overflow. https://github.com/Victek/Tomato-RAF/commit/2f343c3844d08edd97ad660c25368fb943670b73 --- release/src-rt/linux/linux-2.6/net/ipv6/addrconf.c | 4 ++++ release/src/router/rc/firewall.c | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/release/src-rt/linux/linux-2.6/net/ipv6/addrconf.c b/release/src-rt/linux/linux-2.6/net/ipv6/addrconf.c index 69c88d5a14..f00164f1cc 100644 --- a/release/src-rt/linux/linux-2.6/net/ipv6/addrconf.c +++ b/release/src-rt/linux/linux-2.6/net/ipv6/addrconf.c @@ -1382,6 +1382,8 @@ void addrconf_leave_solict(struct inet6_dev *idev, struct in6_addr *addr) static void addrconf_join_anycast(struct inet6_ifaddr *ifp) { struct in6_addr addr; + if (ifp->prefix_len >= 127) /* RFC 6164 */ + return; ipv6_addr_prefix(&addr, &ifp->addr, ifp->prefix_len); if (ipv6_addr_any(&addr)) return; @@ -1391,6 +1393,8 @@ static void addrconf_join_anycast(struct inet6_ifaddr *ifp) static void addrconf_leave_anycast(struct inet6_ifaddr *ifp) { struct in6_addr addr; + if (ifp->prefix_len >= 127) /* RFC 6164 */ + return; ipv6_addr_prefix(&addr, &ifp->addr, ifp->prefix_len); if (ipv6_addr_any(&addr)) return; diff --git a/release/src/router/rc/firewall.c b/release/src/router/rc/firewall.c index 656d3320e4..3401414786 100644 --- a/release/src/router/rc/firewall.c +++ b/release/src/router/rc/firewall.c @@ -636,6 +636,13 @@ static void mangle_table(void) #endif #endif } +// Reset Incoming DSCP to 0x00 +#ifdef LINUX26 + modprobe("xt_DSCP"); +#else + modprobe("ipt_DSCP"); +#endif + ipt_write("-I PREROUTING -i %s -j DSCP --set-dscp 0\n", wanface); } ip46t_write("COMMIT\n"); -- 2.11.4.GIT