From: Harlan Stenn Date: Thu, 4 Jul 2002 06:43:41 +0000 (-0400) Subject: Cleanup from John Hay. X-Git-Tag: NTP_4_1_73~129 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b325db1f4ac2e291ee3d43ee6eaed16304e49e7a;p=thirdparty%2Fntp.git Cleanup from John Hay. bk: 3d23ee9dGhMNVjGtB5CXV1SeA4_XtQ --- diff --git a/include/ntpd.h b/include/ntpd.h index 32f15c2a2c..2440c386cf 100644 --- a/include/ntpd.h +++ b/include/ntpd.h @@ -142,7 +142,7 @@ extern void resetmanycast P((void)); /* ntp_crypto.c */ #ifdef OPENSSL extern void crypto_recv P((struct peer *, struct recvbuf *)); -extern int crypto_xmit P((struct pkt *, struct sockaddr_in *, int, struct exten *, keyid_t)); +extern int crypto_xmit P((struct pkt *, struct sockaddr_storage *, int, struct exten *, keyid_t)); extern keyid_t session_key P((struct sockaddr_storage *, struct sockaddr_storage *, keyid_t, keyid_t, u_long)); extern void make_keylist P((struct peer *, struct interface *)); extern void key_expire P((struct peer *)); diff --git a/ntpd/ntp_crypto.c b/ntpd/ntp_crypto.c index 4db826104f..3984770ae7 100644 --- a/ntpd/ntp_crypto.c +++ b/ntpd/ntp_crypto.c @@ -1084,7 +1084,7 @@ crypto_recv( int crypto_xmit( struct pkt *xpkt, /* transmit packet pointer */ - struct sockaddr_in *srcadr_sin, /* active runway */ + struct sockaddr_storage *srcadr_sin, /* active runway */ int start, /* offset to extension field */ struct exten *ep, /* extension pointer */ keyid_t cookie /* session cookie */ @@ -1313,14 +1313,20 @@ crypto_xmit( * persistent rascals we toss back a kiss-of-death grenade. */ if (rval > XEVNT_TSP) { - struct sockaddr_in mskadr_sin; + struct sockaddr_storage mskadr_sin; int hismode; int resflag = RES_DONTSERVE | RES_TIMEOUT; opcode |= CRYPTO_ERROR; sprintf(statstr, "error %x opcode %x", rval, opcode); record_crypto_stats(srcadr_sin, statstr); - mskadr_sin.sin_addr.s_addr = ~(u_int32)0; + memset((char *)&mskadr_sin, 0, sizeof(struct sockaddr_storage)); + mskadr_sin.ss_family = srcadr_sin->ss_family; + if (mskadr_sin.ss_family == AF_INET) + GET_INADDR(mskadr_sin) =~(u_int32)0; + else + memset(&GET_INADDR6(mskadr_sin), 0xff, + sizeof(struct in6_addr)); hismode = PKT_MODE(xpkt->li_vn_mode); if (hismode != MODE_BROADCAST && hismode != MODE_SERVER) resflag |= RES_DEMOBILIZE; diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c index 185ee1c657..23b36b50e5 100644 --- a/ntpd/ntp_proto.c +++ b/ntpd/ntp_proto.c @@ -716,7 +716,15 @@ receive( crypto_recv(peer, rbufp); if (peer->flash) { unpeer(peer); - mskadr_sin.sin_addr.s_addr =~(u_int32)0; + memset((char *)&mskadr_sin, 0, + sizeof(struct sockaddr_storage)); + mskadr_sin.ss_family = + rbufp->recv_srcadr.ss_family; + if (mskadr_sin.ss_family == AF_INET) + GET_INADDR(mskadr_sin) =~(u_int32)0; + else + memset(&GET_INADDR6(mskadr_sin), 0xff, + sizeof(struct in6_addr)); hack_restrict(RESTRICT_FLAGS, &rbufp->recv_srcadr, &mskadr_sin, RESM_NTPONLY, RES_DONTSERVE | @@ -978,8 +986,15 @@ receive( } peer->flash |= TEST4; memcpy(&peer->refid, "CRYP", 4); - mskadr_sin.sin_addr.s_addr = - ~(u_int32)0; + memset((char *)&mskadr_sin, 0, + sizeof(struct sockaddr_storage)); + mskadr_sin.ss_family = + rbufp->recv_srcadr.ss_family; + if (mskadr_sin.ss_family == AF_INET) + GET_INADDR(mskadr_sin) =~(u_int32)0; + else + memset(&GET_INADDR6(mskadr_sin), 0xff, + sizeof(struct in6_addr)); if (hismode != MODE_BROADCAST && hismode != MODE_SERVER) resflag |= RES_DEMOBILIZE;