union since the largest we use is sockaddr_in6 (28 bytes on win32).
bk: 4b8b86dcYNcwlt4ibwh4sK4Rk4-nGw
typedef union {
struct sockaddr sa;
- struct sockaddr_storage sas;
struct sockaddr_in sa4;
struct sockaddr_in6 sa6;
} sockaddr_u;
#define PSOCK_ADDR4(psau) (&SOCK_ADDR4(psau))
#define PSOCK_ADDR6(psau) (&SOCK_ADDR6(psau))
-#define AF(psau) ((psau)->sas.ss_family)
+#define AF(psau) ((psau)->sa.sa_family)
#define IS_IPV4(psau) (AF_INET == AF(psau))
#define IS_IPV6(psau) (AF_INET6 == AF(psau))
: sizeof((psau)->sa6))
#define ZERO_SOCK(psau) \
- memset(&(psau)->sas, 0, sizeof((psau)->sas))
+ memset((psau), 0, sizeof(*(psau)))
/* blast a byte value across sockaddr_u v6 address */
#define MEMSET_ADDR6(psau, v) \
memset(addr, 0, sizeof(*addr));
AF(addr) = (u_short)ipaddr.family;
#ifdef ISC_PLATFORM_HAVESALEN
- addr->sas.ss_len = SIZEOF_SOCKADDR(AF(addr));
+ addr->sa.sa_len = SIZEOF_SOCKADDR(AF(addr));
#endif
if (IS_IPV4(addr))
memcpy(&addr->sa4.sin_addr, &ipaddr.type.in,
static void
sockaddr_dump(sockaddr_u *psau)
{
- /* Limit the size of the sockaddr_storage hex dump */
- const int maxsize = min(32, sizeof(psau->sas));
+ /* Limit the size of the sockaddr_in6 hex dump */
+ const int maxsize = min(32, sizeof(psau->sa6));
u_char * cp;
int i;
- cp = (u_char *)&psau->sas;
+ cp = (u_char *)psau;
for(i = 0; i < maxsize; i++)
{
UNLINK_HEAD_SLIST(md, mon_free, hash_next);
/*
* Preempt from the MRU list if old enough.
+ * What is the intention of the tail->count == 1 test
+ * and is it still useful? It seems to be avoiding
+ * mon_age controlled preemption of entries representing
+ * a single packet, and I don't understand how that helps.
+ * -- Dave Hart
*/
} else if (tail->count == 1 || ntp_random() / (2. *
FRAC) > (double)(current_time -
NSRCADR(&addr) = ipl->addr;
}
#ifdef ISC_PLATFORM_HAVESALEN
- addr.sas.ss_len = SOCKLEN(&addr);
+ addr.sa.sa_len = SOCKLEN(&addr);
#endif
ipl++;
if ((pp = findexistingpeer(&addr, NULL, NULL, -1)) == 0)
NSRCADR(&addr) = ipl->addr;
}
#ifdef ISC_PLATFORM_HAVESALEN
- addr.sas.ss_len = SOCKLEN(&addr);
+ addr.sa.sa_len = SOCKLEN(&addr);
#endif
DPRINTF(1, ("peer_stats: looking for %s, %d, %d\n",
stoa(&addr), ipl->port, NSRCPORT(&addr)));
}
NSRCPORT(&peeraddr) = htons(NTP_PORT);
#ifdef ISC_PLATFORM_HAVESALEN
- peeraddr.sas.ss_len = SOCKLEN(&peeraddr);
+ peeraddr.sa.sa_len = SOCKLEN(&peeraddr);
#endif
/* XXX W2DO? minpoll/maxpoll arguments ??? */
}
SET_PORT(&peeraddr, NTP_PORT);
#ifdef ISC_PLATFORM_HAVESALEN
- peeraddr.sas.ss_len = SOCKLEN(&peeraddr);
+ peeraddr.sa.sa_len = SOCKLEN(&peeraddr);
#endif
found = 0;
peer = NULL;
}
SET_PORT(&peeraddr, NTP_PORT);
#ifdef ISC_PLATFORM_HAVESALEN
- peeraddr.sas.ss_len = SOCKLEN(&peeraddr);
+ peeraddr.sa.sa_len = SOCKLEN(&peeraddr);
#endif
found = 0;
peer = NULL;
}
#ifdef ISC_PLATFORM_HAVESALEN
- peeraddr.sas.ss_len = SOCKLEN(&peeraddr);
+ peeraddr.sa.sa_len = SOCKLEN(&peeraddr);
#endif
peer = findexistingpeer(&peeraddr, NULL, NULL, -1);
if (NULL == peer)
}
SET_PORT(&peeraddr, 123);
#ifdef ISC_PLATFORM_HAVESALEN
- peeraddr.sas.ss_len = SOCKLEN(&peeraddr);
+ peeraddr.sa.sa_len = SOCKLEN(&peeraddr);
#endif
peer = findexistingpeer(&peeraddr, NULL, NULL, -1);
while (peer != NULL) {
ZERO_SOCK(&addr);
AF(&addr) = AF_INET;
#ifdef ISC_PLATFORM_HAVESALEN
- addr.sas.ss_len = SOCKLEN(&addr);
+ addr.sa.sa_len = SOCKLEN(&addr);
#endif
SET_PORT(&addr, NTP_PORT);
items = INFO_NITEMS(inpkt->err_nitems);
AF(&addr) = AF_INET;
NSRCADR(&addr) = cf->clockadr;
#ifdef ISC_PLATFORM_HAVESALEN
- addr.sas.ss_len = SOCKLEN(&addr);
+ addr.sa.sa_len = SOCKLEN(&addr);
#endif
SET_PORT(&addr, NTP_PORT);
if (!ISREFCLOCKADR(&addr) ||
ZERO_SOCK(&addr);
AF(&addr) = AF_INET;
#ifdef ISC_PLATFORM_HAVESALEN
- addr.sas.ss_len = SOCKLEN(&addr);
+ addr.sa.sa_len = SOCKLEN(&addr);
#endif
SET_PORT(&addr, NTP_PORT);
items = INFO_NITEMS(inpkt->err_nitems);
#define PPS_PRECISION (-20) /* precision assumed (about 1 us) */
#define REFID "GPS\0" /* reference id */
#define DESCRIPTION "NMEA GPS Clock" /* who we are */
-#define NANOSECOND 1000000000 /* one second (ns) */
-#define RANGEGATE 500000 /* range gate (ns) */
#ifndef O_NOCTTY
#define M_NOCTTY 0
#else
#ifdef ISC_PLATFORM_HAVESALEN
#define SET_SS_LEN_IF_PRESENT(psau) \
do { \
- (psau)->sas.ss_len = SOCKLEN(psau); \
+ (psau)->sa.sa_len = SOCKLEN(psau); \
} while (0)
#else
#define SET_SS_LEN_IF_PRESENT(psau) do { } while (0)
NSRCADR(&src) = pp->srcadr;
}
#ifdef ISC_PLATFORM_HAVESALEN
- src.sas.ss_len = SOCKLEN(&src);
- dst.sas.ss_len = SOCKLEN(&dst);
+ src.sa.sa_len = SOCKLEN(&src);
+ dst.sa.sa_len = SOCKLEN(&dst);
#endif
(void) fprintf(fp, "remote host: %s\n",
nntohost(&src));
#ifdef DEBUG
printf("sntp recvdata: Trying to receive data from...\n");
#endif
- slen = sizeof(sender->sas);
+ slen = sizeof(*sender);
recvc = recvfrom(rsock, rdata, rdata_length, 0,
&sender->sa, &slen);
#ifdef DEBUG
default:
{
- GETSOCKNAME_SOCKLEN_TYPE ss_len = sizeof(ras->sas);
+ GETSOCKNAME_SOCKLEN_TYPE ss_len = sizeof(*ras);
recv_bytes = recvfrom(rsock, rdata, rdata_len, 0, &ras->sa, &ss_len);
}