From: John Hay Date: Tue, 23 Oct 2001 12:38:35 +0000 (+0200) Subject: Some sockaddr_in to sockaddr_storage conversions. They were missed because they came X-Git-Tag: NTP_4_1_73~247 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=621f9ae67ae355428ca5b07310a8a2e7bcfba3fb;p=thirdparty%2Fntp.git Some sockaddr_in to sockaddr_storage conversions. They were missed because they came after the initial IPv6 port. bk: 3bd564cbgyHamMYPJOeld9IOQzDfIA --- diff --git a/include/ntpd.h b/include/ntpd.h index 0e05666b23..35acc27bea 100644 --- a/include/ntpd.h +++ b/include/ntpd.h @@ -143,7 +143,7 @@ extern void resetmanycast P((void)); #ifdef OPENSSL extern void crypto_recv P((struct peer *, struct recvbuf *, int)); extern int crypto_xmit P((struct pkt *, int, u_int32 *, keyid_t, u_int)); -extern keyid_t session_key P((struct sockaddr_in *, struct sockaddr_in *, keyid_t, keyid_t, u_long)); +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 *)); extern void crypto_sign P((void)); @@ -211,7 +211,7 @@ extern void record_peer_stats P((struct sockaddr_storage *, int, double, double, extern void record_loop_stats P((double, double, double, double, int)); extern void record_clock_stats P((struct sockaddr_storage *, const char *)); extern void record_raw_stats P((struct sockaddr_storage *, struct sockaddr_storage *, l_fp *, l_fp *, l_fp *, l_fp *)); -extern void record_crypto_stats P((struct sockaddr_in *, const char *)); +extern void record_crypto_stats P((struct sockaddr_storage *, const char *)); extern int sock_hash P((struct sockaddr_storage *)); /* diff --git a/ntpd/ntp_crypto.c b/ntpd/ntp_crypto.c index 462c425102..28b88bc800 100644 --- a/ntpd/ntp_crypto.c +++ b/ntpd/ntp_crypto.c @@ -143,8 +143,8 @@ static int crypto_encrypt P((struct value *, struct value *, */ keyid_t /* returns next key ID */ session_key( - struct sockaddr_in *srcadr, /* source address */ - struct sockaddr_in *dstadr, /* destination address */ + struct sockaddr_storage *srcadr, /* source address */ + struct sockaddr_storage *dstadr, /* destination address */ keyid_t keyno, /* key ID */ keyid_t private, /* private value */ u_long lifetime /* key lifetime */ @@ -160,8 +160,16 @@ session_key( * Generate the session key and key ID. If the lifetime is * greater than zero, install the key and call it trusted. */ - header[0] = srcadr->sin_addr.s_addr; - header[1] = dstadr->sin_addr.s_addr; + switch(srcadr->ss_family) { + case AF_INET: + header[0] = ((struct sockaddr_in *)srcadr)->sin_addr.s_addr; + header[1] = ((struct sockaddr_in *)dstadr)->sin_addr.s_addr; + break; + case AF_INET6: + /* XXX we need some IPv6 code here! */ + msyslog(LOG_ERR, "IPv6 crypto code missing"); + break; + } header[2] = htonl(keyno); header[3] = htonl(private); EVP_DigestInit(&ctx, EVP_md5()); diff --git a/ntpd/ntp_util.c b/ntpd/ntp_util.c index be469a4604..b45d76c832 100644 --- a/ntpd/ntp_util.c +++ b/ntpd/ntp_util.c @@ -648,7 +648,7 @@ record_raw_stats( */ void record_crypto_stats( - struct sockaddr_in *addr, + struct sockaddr_storage *addr, const char *text ) { @@ -678,7 +678,7 @@ record_crypto_stats( day, sec, msec, text); else fprintf(cryptostats.fp, "%lu %lu.%03lu %s %s\n", - day, sec, msec, ntoa(addr), text); + day, sec, msec, stoa(addr), text); fflush(cryptostats.fp); } }