diff options
Diffstat (limited to 'obsolete-buildroot/sources/dnsmasq1-openwrt.patch')
-rw-r--r-- | obsolete-buildroot/sources/dnsmasq1-openwrt.patch | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/obsolete-buildroot/sources/dnsmasq1-openwrt.patch b/obsolete-buildroot/sources/dnsmasq1-openwrt.patch deleted file mode 100644 index e1741a28a..000000000 --- a/obsolete-buildroot/sources/dnsmasq1-openwrt.patch +++ /dev/null @@ -1,219 +0,0 @@ -diff -x CVS -urN dnsmasq-1.18/dhcp.c dnsmasq.old/dhcp.c ---- dnsmasq-1.18/dhcp.c 2003-11-05 08:30:20.000000000 -0600 -+++ dnsmasq.old/dhcp.c 2004-01-05 23:40:11.000000000 -0600 -@@ -15,14 +15,20 @@ - - #include "dnsmasq.h" - --static int next_token (char *token, int buffsize, FILE * fp); -+struct dhcpOfferedAddr { -+ u_int8_t hostname[16]; -+ u_int8_t chaddr[16]; -+ u_int32_t yiaddr; /* network order */ -+ u_int32_t expires; /* host order */ -+}; - - void load_dhcp(char *file, char *suffix, time_t now, char *hostname) - { -- char token[MAXTOK], *dot; -+ char *dot; - struct all_addr host_address; -- time_t ttd, tts; -+ time_t ttd; - FILE *fp = fopen (file, "r"); -+ struct dhcpOfferedAddr lease; - - if (!fp) - { -@@ -34,154 +40,45 @@ - - /* remove all existing DHCP cache entries */ - cache_unhash_dhcp(); -- -- while ((next_token(token, MAXTOK, fp))) -- { -- if (strcmp(token, "lease") == 0) -- { -- hostname[0] = '\0'; -- ttd = tts = (time_t)(-1); --#ifdef HAVE_IPV6 -- if (next_token(token, MAXTOK, fp) && -- inet_pton(AF_INET, token, &host_address)) --#else -- if (next_token(token, MAXTOK, fp) && -- (host_address.addr4.s_addr = inet_addr(token)) != (in_addr_t) -1) --#endif -- { -- if (next_token(token, MAXTOK, fp) && *token == '{') -- { -- while (next_token(token, MAXTOK, fp) && *token != '}') -+ -+ while (fread(&lease, sizeof(lease), 1, fp)) { -+ host_address.addr.addr4.s_addr = lease.yiaddr; -+ -+ strcpy(hostname,lease.hostname); -+ if (lease.expires>(unsigned)now) -+ ttd = lease.expires; -+ else -+ ttd = -1; -+ dot = strchr(hostname, '.'); -+ if (suffix) - { -- if ((strcmp(token, "client-hostname") == 0) || -- (strcmp(token, "hostname") == 0)) -- { -- if (next_token(hostname, MAXDNAME, fp)) -- if (!canonicalise(hostname)) -- { -- *hostname = 0; -- syslog(LOG_ERR, "bad name in %s", file); -- } -- } -- else if ((strcmp(token, "ends") == 0) || -- (strcmp(token, "starts") == 0)) -- { -- struct tm lease_time; -- int is_ends = (strcmp(token, "ends") == 0); -- if (next_token(token, MAXTOK, fp) && /* skip weekday */ -- next_token(token, MAXTOK, fp) && /* Get date from lease file */ -- sscanf (token, "%d/%d/%d", -- &lease_time.tm_year, -- &lease_time.tm_mon, -- &lease_time.tm_mday) == 3 && -- next_token(token, MAXTOK, fp) && -- sscanf (token, "%d:%d:%d:", -- &lease_time.tm_hour, -- &lease_time.tm_min, -- &lease_time.tm_sec) == 3) -- { -- /* There doesn't seem to be a universally available library function -- which converts broken-down _GMT_ time to seconds-in-epoch. -- The following was borrowed from ISC dhcpd sources, where -- it is noted that it might not be entirely accurate for odd seconds. -- Since we're trying to get the same answer as dhcpd, that's just -- fine here. */ -- static int months [11] = { 31, 59, 90, 120, 151, 181, -- 212, 243, 273, 304, 334 }; -- time_t time = ((((((365 * (lease_time.tm_year - 1970) + /* Days in years since '70 */ -- (lease_time.tm_year - 1969) / 4 + /* Leap days since '70 */ -- (lease_time.tm_mon > 1 /* Days in months this year */ -- ? months [lease_time.tm_mon - 2] -- : 0) + -- (lease_time.tm_mon > 2 && /* Leap day this year */ -- !((lease_time.tm_year - 1972) & 3)) + -- lease_time.tm_mday - 1) * 24) + /* Day of month */ -- lease_time.tm_hour) * 60) + -- lease_time.tm_min) * 60) + lease_time.tm_sec; -- if (is_ends) -- ttd = time; -- else -- tts = time; } -+ if (dot) -+ { /* suffix and lease has ending: must match */ -+ if (strcmp(dot+1, suffix) != 0) -+ syslog(LOG_WARNING, -+ "Ignoring DHCP lease for %s because it has an illegal domain part", hostname); -+ else -+ cache_add_dhcp_entry(hostname, &host_address, ttd, F_REVERSE); - } -- } -- -- /* missing info? */ -- if (!*hostname) -- continue; -- if (ttd == (time_t)(-1)) -- continue; -- -- /* infinite lease to is represented by -1 */ -- /* This makes is to the lease file as -- start time one less than end time. */ -- /* We use -1 as infinite in ttd */ -- if ((tts != -1) && (ttd == tts - 1)) -- ttd = (time_t)(-1); -- else if (ttd < now) -- continue; -- -- dot = strchr(hostname, '.'); -- if (suffix) -- { -- if (dot) -- { /* suffix and lease has ending: must match */ -- if (strcmp(dot+1, suffix) != 0) -- syslog(LOG_WARNING, -- "Ignoring DHCP lease for %s because it has an illegal domain part", hostname); -- else -- cache_add_dhcp_entry(hostname, &host_address, ttd, F_REVERSE); -- } -- else -- { /* suffix exists but lease has no ending - add lease and lease.suffix */ -- cache_add_dhcp_entry(hostname, &host_address, ttd, 0); -- strncat(hostname, ".", MAXDNAME); -- strncat(hostname, suffix, MAXDNAME); -- hostname[MAXDNAME-1] = 0; /* in case strncat hit limit */ -- /* Make FQDN canonical for reverse lookups */ -- cache_add_dhcp_entry(hostname, &host_address, ttd, F_REVERSE); -- } -- } -- else -- { /* no suffix */ -- if (dot) /* no lease ending allowed */ -- syslog(LOG_WARNING, -- "Ignoring DHCP lease for %s because it has a domain part", hostname); -- else -- cache_add_dhcp_entry(hostname, &host_address, ttd, F_REVERSE); -- } -- } -- } -- } -- } -+ else -+ { /* suffix exists but lease has no ending - add lease and lease.suffix */ -+ cache_add_dhcp_entry(hostname, &host_address, ttd, 0); -+ strncat(hostname, ".", MAXDNAME); -+ strncat(hostname, suffix, MAXDNAME); -+ hostname[MAXDNAME-1] = 0; /* in case strncat hit limit */ -+ /* Make FQDN canonical for reverse lookups */ -+ cache_add_dhcp_entry(hostname, &host_address, ttd, F_REVERSE); -+ } -+ } -+ else -+ { /* no suffix */ -+ if (dot) /* no lease ending allowed */ -+ syslog(LOG_WARNING, -+ "Ignoring DHCP lease for %s because it has a domain part", hostname); -+ else -+ cache_add_dhcp_entry(hostname, &host_address, ttd, F_REVERSE); -+ } -+ } - fclose(fp); - - } -- --static int next_token (char *token, int buffsize, FILE * fp) --{ -- int c, count = 0; -- char *cp = token; -- -- while((c = getc(fp)) != EOF) -- { -- if (c == '#') -- do { c = getc(fp); } while (c != '\n' && c != EOF); -- -- if (c == ' ' || c == '\t' || c == '\n' || c == ';') -- { -- if (count) -- break; -- } -- else if ((c != '"') && (count<buffsize-1)) -- { -- *cp++ = c; -- count++; -- } -- } -- -- *cp = 0; -- return count ? 1 : 0; --} -- -- -- |