#include	"unproute.h"

char *
sock_masktop(struct sockaddr *sa, socklen_t salen)
{
	static char		str[INET6_ADDRSTRLEN];
	unsigned char	*ptr = &sa->sa_data[2];

	if (sa->sa_len == 0)
		return("0.0.0.0");
	else if (sa->sa_len == 5)
		snprintf(str, sizeof(str), "%d.0.0.0", *ptr);
	else if (sa->sa_len == 6)
		snprintf(str, sizeof(str), "%d.%d.0.0", *ptr, *(ptr+1));
	else if (sa->sa_len == 7)
		snprintf(str, sizeof(str), "%d.%d.%d.0", *ptr, *(ptr+1), *(ptr+2));
	else if (sa->sa_len == 8)
		snprintf(str, sizeof(str), "%d.%d.%d.%d",
				 *ptr, *(ptr+1), *(ptr+2), *(ptr+3));
	else
		snprintf(str, sizeof(str), "(unknown mask, len = %d, family = %d)",
				 sa->sa_len, sa->sa_family);
	return(str);
}


syntax highlighted by Code2HTML, v. 0.9.1