- fixed #467004 PPP sometimes gets incorrect DNS servers for mobile
broadband connections
This commit is contained in:
parent
8078de6547
commit
021f68f529
104
ppp-2.4.4-bogus_dns_addr.patch
Normal file
104
ppp-2.4.4-bogus_dns_addr.patch
Normal file
@ -0,0 +1,104 @@
|
||||
diff -up ppp-2.4.4/pppd/ipcp.c.bogus_dns_addr ppp-2.4.4/pppd/ipcp.c
|
||||
--- ppp-2.4.4/pppd/ipcp.c.bogus_dns_addr 2005-08-26 01:59:34.000000000 +0200
|
||||
+++ ppp-2.4.4/pppd/ipcp.c 2008-12-11 12:39:05.000000000 +0100
|
||||
@@ -715,7 +715,8 @@ ipcp_cilen(f)
|
||||
#define LENCIADDRS(neg) (neg ? CILEN_ADDRS : 0)
|
||||
#define LENCIVJ(neg, old) (neg ? (old? CILEN_COMPRESS : CILEN_VJ) : 0)
|
||||
#define LENCIADDR(neg) (neg ? CILEN_ADDR : 0)
|
||||
-#define LENCIDNS(neg) (neg ? (CILEN_ADDR) : 0)
|
||||
+#define LENCIDNS(neg) LENCIADDR(neg)
|
||||
+#define LENCIWINS(neg) LENCIADDR(neg)
|
||||
|
||||
/*
|
||||
* First see if we want to change our options to the old
|
||||
@@ -737,7 +738,9 @@ ipcp_cilen(f)
|
||||
LENCIVJ(go->neg_vj, go->old_vj) +
|
||||
LENCIADDR(go->neg_addr) +
|
||||
LENCIDNS(go->req_dns1) +
|
||||
- LENCIDNS(go->req_dns2)) ;
|
||||
+ LENCIDNS(go->req_dns2) +
|
||||
+ LENCIWINS(go->winsaddr[0]) +
|
||||
+ LENCIWINS(go->winsaddr[1])) ;
|
||||
}
|
||||
|
||||
|
||||
@@ -810,6 +813,19 @@ ipcp_addci(f, ucp, lenp)
|
||||
} else \
|
||||
neg = 0; \
|
||||
}
|
||||
+
|
||||
+#define ADDCIWINS(opt, addr) \
|
||||
+ if (addr) { \
|
||||
+ if (len >= CILEN_ADDR) { \
|
||||
+ u_int32_t l; \
|
||||
+ PUTCHAR(opt, ucp); \
|
||||
+ PUTCHAR(CILEN_ADDR, ucp); \
|
||||
+ l = ntohl(addr); \
|
||||
+ PUTLONG(l, ucp); \
|
||||
+ len -= CILEN_ADDR; \
|
||||
+ } else \
|
||||
+ addr = 0; \
|
||||
+ }
|
||||
|
||||
ADDCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs, go->ouraddr,
|
||||
go->hisaddr);
|
||||
@@ -823,6 +839,10 @@ ipcp_addci(f, ucp, lenp)
|
||||
|
||||
ADDCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]);
|
||||
|
||||
+ ADDCIWINS(CI_MS_WINS1, go->winsaddr[0]);
|
||||
+
|
||||
+ ADDCIWINS(CI_MS_WINS2, go->winsaddr[1]);
|
||||
+
|
||||
*lenp -= len;
|
||||
}
|
||||
|
||||
@@ -1159,6 +1179,15 @@ ipcp_nakci(f, p, len, treat_as_reject)
|
||||
try.neg_addr = 1;
|
||||
no.neg_addr = 1;
|
||||
break;
|
||||
+ case CI_MS_WINS1:
|
||||
+ case CI_MS_WINS2:
|
||||
+ if (cilen != CILEN_ADDR)
|
||||
+ goto bad;
|
||||
+ GETLONG(l, p);
|
||||
+ ciaddr1 = htonl(l);
|
||||
+ if (ciaddr1)
|
||||
+ try.winsaddr[citype == CI_MS_WINS2] = ciaddr1;
|
||||
+ break;
|
||||
}
|
||||
p = next;
|
||||
}
|
||||
@@ -1275,6 +1304,21 @@ ipcp_rejci(f, p, len)
|
||||
try.neg = 0; \
|
||||
}
|
||||
|
||||
+#define REJCIWINS(opt, addr) \
|
||||
+ if (addr && \
|
||||
+ ((cilen = p[1]) == CILEN_ADDR) && \
|
||||
+ len >= cilen && \
|
||||
+ p[0] == opt) { \
|
||||
+ u_int32_t l; \
|
||||
+ len -= cilen; \
|
||||
+ INCPTR(2, p); \
|
||||
+ GETLONG(l, p); \
|
||||
+ cilong = htonl(l); \
|
||||
+ /* Check rejected value. */ \
|
||||
+ if (cilong != addr) \
|
||||
+ goto bad; \
|
||||
+ try.winsaddr[opt == CI_MS_WINS2] = 0; \
|
||||
+ }
|
||||
|
||||
REJCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs,
|
||||
go->ouraddr, go->hisaddr);
|
||||
@@ -1288,6 +1332,10 @@ ipcp_rejci(f, p, len)
|
||||
|
||||
REJCIDNS(CI_MS_DNS2, req_dns2, go->dnsaddr[1]);
|
||||
|
||||
+ REJCIWINS(CI_MS_WINS1, go->winsaddr[0]);
|
||||
+
|
||||
+ REJCIWINS(CI_MS_WINS2, go->winsaddr[1]);
|
||||
+
|
||||
/*
|
||||
* If there are any remaining CIs, then this packet is bad.
|
||||
*/
|
7
ppp.spec
7
ppp.spec
@ -1,7 +1,7 @@
|
||||
Summary: The PPP (Point-to-Point Protocol) daemon.
|
||||
Name: ppp
|
||||
Version: 2.4.4
|
||||
Release: 8%{?dist}
|
||||
Release: 9%{?dist}
|
||||
License: BSD and LGPLv2+ and GPLv2+ and Public Domain
|
||||
Group: System Environment/Daemons
|
||||
Source0: ftp://ftp.samba.org/pub/ppp/ppp-%{version}.tar.gz
|
||||
@ -27,6 +27,7 @@ Patch23: ppp-2.4.2-dontwriteetc.patch
|
||||
Patch24: ppp-2.4.4-closelog.patch
|
||||
Patch25: ppp-2.4.4-response_len.patch
|
||||
Patch26: ppp-2.4.4-new_speeds.patch
|
||||
Patch27: ppp-2.4.4-bogus_dns_addr.patch
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-root
|
||||
BuildPrereq: pam-devel, libpcap-devel
|
||||
@ -70,6 +71,7 @@ This package contains the header files for building plugins for ppp.
|
||||
%patch24 -p1 -b .closelog
|
||||
%patch25 -p1 -b .response_len
|
||||
%patch26 -p1 -b .new_speeds
|
||||
%patch27 -p1 -b .bogus_dns_addr
|
||||
|
||||
rm -f scripts/*.local
|
||||
rm -f scripts/*.change_resolv_conf
|
||||
@ -134,6 +136,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%doc PLUGINS
|
||||
|
||||
%changelog
|
||||
* Thu Dec 11 2008 Jiri Skala <jskala@redhat.com> 2.4.4.-9
|
||||
- fixed #467004 PPP sometimes gets incorrect DNS servers for mobile broadband connections
|
||||
|
||||
* Thu Aug 28 2008 Tom "spot" Callaway <tcallawa@redhat.com> 2.4.4-8
|
||||
- fix license tag
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user