> >   usr.sbin/xntpd/xntpd:
> 
> These directories don't exist anymore in -CURRENT because we now have ntp4.

Woops sorry, a machine in my home which I used to produce
those diffs, still mistakenly had the directory.

> > --- contrib/ntp/ntpd/ntp_io.c.orig  Fri Jan 28 15:44:00 2000
> > +++ contrib/ntp/ntpd/ntp_io.c       Mon Feb 28 02:26:46 2000
> > @@ -444,7 +444,7 @@
> >                     continue;
> >             }
> >  # endif /* SYS_WINNT */
> > -           ifreq = *ifr;
> > +           memcpy(&ifreq, ifr, sizeof(ifreq));
> >             inter_list[i].flags = 0;
> >             /* is it broadcast capable? */
> >  # ifndef SYS_WINNT
> 
> This one should be sent to the NTP guys before ntpd 4.1.0 goes out.

OK, I sent it to [EMAIL PROTECTED]


And I found that my patches to
contrib/bind/lib/irs/gethotent.c needs a fix.

-               memcpy(&ifreq, cp, sizeof *ifreqs);
+               memcpy(ifreqp, cp, sizeof ifreqbuf);

This is updated patches.

Thanks,
Yoshinobu Inoue

--- contrib/bind/lib/irs/gethostent.c.orig      Tue Nov 30 15:38:00 1999
+++ contrib/bind/lib/irs/gethostent.c   Mon Feb 28 13:55:43 2000
@@ -462,13 +462,16 @@
 static int
 scan_interfaces(int *have_v4, int *have_v6) {
        struct ifconf ifc;
-       struct ifreq ifreq;
+       struct ifreq* ifreqp;
        struct in_addr in4;
        struct in6_addr in6;
        char *buf = NULL, *cp, *cplim;
+       char ifreqbuf[IFNAMSIZ + sizeof(struct sockaddr_storage)];
        static int bufsiz = 4095;
        int s, cpsize, n;
 
+       ifreqp = (struct ifreq *)ifreqbuf;
+
        /* Set to zero.  Used as loop terminators below. */
        *have_v4 = *have_v6 = 0;
 
@@ -504,7 +507,7 @@
                         * buffer we will grow it just in case and
                         * retry.
                         */
-                       if (ifc.ifc_len + 2 * sizeof(ifreq) < bufsiz)
+                       if (ifc.ifc_len + 2 * sizeof(*ifreqp) < bufsiz)
                                break;
                }
 #endif
@@ -523,40 +526,40 @@
        for (cp = buf;
             (*have_v4 == 0 || *have_v6 == 0) && cp < cplim;
             cp += cpsize) {
-               memcpy(&ifreq, cp, sizeof ifreq);
+               memcpy(ifreqp, cp, sizeof ifreqbuf);
 #ifdef HAVE_SA_LEN
 #ifdef FIX_ZERO_SA_LEN
-               if (ifreq.ifr_addr.sa_len == 0)
-                       ifreq.ifr_addr.sa_len = 16;
+               if (ifreqp->ifr_addr.sa_len == 0)
+                       ifreqp->ifr_addr.sa_len = 16;
 #endif
 #ifdef HAVE_MINIMUM_IFREQ
-               cpsize = sizeof ifreq;
-               if (ifreq.ifr_addr.sa_len > sizeof (struct sockaddr))
-                       cpsize += (int)ifreq.ifr_addr.sa_len -
+               cpsize = sizeof *ifreqp;
+               if (ifreqp->ifr_addr.sa_len > sizeof (struct sockaddr))
+                       cpsize += (int)ifreqp->ifr_addr.sa_len -
                                (int)(sizeof (struct sockaddr));
 #else
-               cpsize = sizeof ifreq.ifr_name + ifreq.ifr_addr.sa_len;
+               cpsize = sizeof ifreqp->ifr_name + ifreqp->ifr_addr.sa_len;
 #endif /* HAVE_MINIMUM_IFREQ */
 #elif defined SIOCGIFCONF_ADDR
-               cpsize = sizeof ifreq;
+               cpsize = sizeof *ifreqp;
 #else
-               cpsize = sizeof ifreq.ifr_name;
+               cpsize = sizeof ifreq->ifr_name;
                /* XXX maybe this should be a hard error? */
-               if (ioctl(s, SIOCGIFADDR, (char *)&ifreq) < 0)
+               if (ioctl(s, SIOCGIFADDR, (char *)ifreqp) < 0)
                        continue;
 #endif
-               switch (ifreq.ifr_addr.sa_family) {
+               switch (ifreqp->ifr_addr.sa_family) {
                case AF_INET:
                        if (*have_v4 == 0) {
                                memcpy(&in4,
                                       &((struct sockaddr_in *)
-                                      &ifreq.ifr_addr)->sin_addr, sizeof in4);
+                                      &ifreqp->ifr_addr)->sin_addr, sizeof in4);
                                if (in4.s_addr == INADDR_ANY)
                                        break;
-                               n = ioctl(s, SIOCGIFFLAGS, (char *)&ifreq);
+                               n = ioctl(s, SIOCGIFFLAGS, (char *)ifreqp);
                                if (n < 0)
                                        break;
-                               if ((ifreq.ifr_flags & IFF_UP) == 0)
+                               if ((ifreqp->ifr_flags & IFF_UP) == 0)
                                        break;
                                *have_v4 = 1;
                        } 
@@ -565,13 +568,13 @@
                        if (*have_v6 == 0) {
                                memcpy(&in6,
                                       &((struct sockaddr_in6 *)
-                                      &ifreq.ifr_addr)->sin6_addr, sizeof in6);
+                                      &ifreqp->ifr_addr)->sin6_addr, sizeof in6);
                                if (memcmp(&in6, &in6addr_any, sizeof in6) == 0)
                                        break;
-                               n = ioctl(s, SIOCGIFFLAGS, (char *)&ifreq);
+                               n = ioctl(s, SIOCGIFFLAGS, (char *)ifreqp);
                                if (n < 0)
                                        break;
-                               if ((ifreq.ifr_flags & IFF_UP) == 0)
+                               if ((ifreqp->ifr_flags & IFF_UP) == 0)
                                        break;
                                *have_v6 = 1;
                        }


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to