xref: /freebsd/contrib/ntp/libntp/refnumtoa.c (revision f5f40dd63bc7acbb5312b26ac1ea1103c12352a6)
1c0b746e5SOllivier Robert /*
2c0b746e5SOllivier Robert  * refnumtoa - return asciized refclock addresses stored in local array space
3c0b746e5SOllivier Robert  */
42b15cb3dSCy Schubert #include <config.h>
5c0b746e5SOllivier Robert #include <stdio.h>
6c0b746e5SOllivier Robert 
72b15cb3dSCy Schubert #include "ntp_net.h"
8c0b746e5SOllivier Robert #include "ntp_stdlib.h"
9c0b746e5SOllivier Robert 
102b15cb3dSCy Schubert const char *
11c0b746e5SOllivier Robert refnumtoa(
12*a466cc55SCy Schubert 	const sockaddr_u *num
13c0b746e5SOllivier Robert 	)
14c0b746e5SOllivier Robert {
152b15cb3dSCy Schubert 	u_int32 netnum;
162b15cb3dSCy Schubert 	char *buf;
172b15cb3dSCy Schubert 	const char *rclock;
182b15cb3dSCy Schubert 
192b15cb3dSCy Schubert 	if (!ISREFCLOCKADR(num))
202b15cb3dSCy Schubert 		return socktoa(num);
21c0b746e5SOllivier Robert 
22c0b746e5SOllivier Robert 	LIB_GETBUF(buf);
232b15cb3dSCy Schubert 	netnum = SRCADR(num);
24c0b746e5SOllivier Robert 	rclock = clockname((int)((u_long)netnum >> 8) & 0xff);
25c0b746e5SOllivier Robert 
26c0b746e5SOllivier Robert 	if (rclock != NULL)
272b15cb3dSCy Schubert 		snprintf(buf, LIB_BUFLENGTH, "%s(%lu)",
282b15cb3dSCy Schubert 			 rclock, (u_long)netnum & 0xff);
29c0b746e5SOllivier Robert 	else
302b15cb3dSCy Schubert 		snprintf(buf, LIB_BUFLENGTH, "REFCLK(%lu,%lu)",
312b15cb3dSCy Schubert 			 ((u_long)netnum >> 8) & 0xff,
322b15cb3dSCy Schubert 			 (u_long)netnum & 0xff);
339c2daa00SOllivier Robert 
34c0b746e5SOllivier Robert 	return buf;
35c0b746e5SOllivier Robert }
36