Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 127060 Details for
Bug 187753
net-misc/dhcpcd problem with multiple ip on same interface
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Work with ARP floods
dhcpcd-arp.patch (text/plain), 3.19 KB, created by
Roy Marples (RETIRED)
on 2007-08-06 12:12:30 UTC
(
hide
)
Description:
Work with ARP floods
Filename:
MIME Type:
Creator:
Roy Marples (RETIRED)
Created:
2007-08-06 12:12:30 UTC
Size:
3.19 KB
patch
obsolete
>Index: arp.c >=================================================================== >--- arp.c (revision 255) >+++ arp.c (working copy) >@@ -105,6 +105,8 @@ > int nprobes = 0; > int nclaims = 0; > struct in_addr null_address; >+ struct timeval stopat; >+ struct timeval now; > > if (! iface->arpable) { > logger (LOG_DEBUG, "interface `%s' is not ARPable", iface->name); >@@ -159,8 +161,21 @@ > retval = 0; > break; > } >+ >+ /* Setup our stop time */ >+ if (get_time (&stopat) != 0) >+ break; >+ stopat.tv_usec += timeout; > } >- >+ >+ /* We maybe ARP flooded, so check our time */ >+ if (get_time (&now) != 0) >+ break; >+ if (timercmp (&now, &stopat, >)) { >+ timeout = 0; >+ continue; >+ } >+ > if (! FD_ISSET (iface->fd, &rset)) > continue; > >Index: Makefile >=================================================================== >--- Makefile (revision 264) >+++ Makefile (working copy) >@@ -1,4 +1,4 @@ >-VERSION = 3.1.3 >+VERSION = 3.1.4_pre1 > CFLAGS ?= -O2 -pipe > > # Should work for both GNU make and BSD make >@@ -49,12 +49,16 @@ > dhcpcd_OBJS = arp.o client.o common.o configure.o dhcp.o dhcpcd.o duid.o \ > info.o interface.o ipv4ll.o logger.o signals.o socket.o > >-# By default we don't need to link to anything >-# Except on Darwin where we need -lresolv, so they need to uncomment this >-#dhcpcd_LIBS = -lresolv >+# These are nasty hacks to work out what libs we need to link to >+# We require librt for glibc bases systems >+_LIBRT != ldd /bin/date 2>/dev/null | grep -q /librt.so && echo "-lrt" || exit 0 >+LIBRT ?= $(_LIBRT) $(shell ldd /bin/date 2>/dev/null | grep -q /librt.so && echo "-lrt") > >+# Darwin needs this, but we have no way of detecting this atm >+#LIRESOLV = -lresolv >+ > dhcpcd: $(dhcpcd_H) $(dhcpcd_OBJS) >- $(CC) $(LDFLAGS) $(dhcpcd_OBJS) $(dhcpcd_LIBS) -o dhcpcd >+ $(CC) $(LDFLAGS) $(dhcpcd_OBJS) $(LIBRT) $(LIBRESOLV) -o dhcpcd > > version.h: > echo '#define VERSION "$(VERSION)"' > version.h >Index: common.c >=================================================================== >--- common.c (revision 254) >+++ common.c (working copy) >@@ -76,17 +76,22 @@ > # endif > #endif > >-/* This requires us to link to rt on glibc, so we use sysinfo instead */ >-#ifdef __linux__ >-#include <sys/sysinfo.h> >-long uptime (void) >+/* Handy function to get the time. */ >+int get_time(struct timeval *tp) > { >- struct sysinfo info; >+ struct timespec ts; > >- sysinfo (&info); >- return info.uptime; >+ if (clock_gettime (CLOCK_MONOTONIC, &ts) == -1) { >+ logger (LOG_ERR, "clock_gettime: %s", strerror (errno)); >+ return (-1); >+ } >+ >+ tp->tv_sec = ts.tv_sec; >+ tp->tv_usec = ts.tv_nsec / 1000; >+ return (0); > } >-#elif __APPLE__ >+ >+#ifdef __APPLE__ > /* Darwin doesn't appear to have an uptime, so try and make one ourselves */ > long uptime (void) > { >Index: common.h >=================================================================== >--- common.h (revision 244) >+++ common.h (working copy) >@@ -23,6 +23,7 @@ > #define COMMON_H > > /* string.h pulls in features.h so the below define checks work */ >+#include <sys/time.h> > #include <string.h> > > /* Only GLIBC doesn't support strlcpy */ >@@ -36,6 +37,7 @@ > void srandomdev (void); > #endif > >+int get_time(struct timeval *tp); > long uptime (void); > void *xmalloc (size_t size); > char *xstrdup (const char *str);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 187753
:
127060
|
127128
|
127143