- if (IN_CLASSA(i)) {
- if (IN_SUBNETA(i))
- return ((i & IN_CLASSA_SUBNET) >> IN_CLASSA_SUBNSHIFT);
- else
- return ((i & IN_CLASSA_NET) >> IN_CLASSA_NSHIFT);
- } else if (IN_CLASSB(i)) {
- if (IN_SUBNETB(i))
- return ((i & IN_CLASSB_SUBNET) >> IN_CLASSB_SUBNSHIFT);
- else
- return ((i & IN_CLASSB_NET) >> IN_CLASSB_NSHIFT);
- } else
- return ((i & IN_CLASSC_NET) >> IN_CLASSC_NSHIFT);
+ work = sns->sns_addr;
+ port = ntohs(work.x_port);
+ work.x_port = 0;
+ net.net_e = work.x_net;
+ if (ns_nullhost(work) && net.long_e == 0) {
+ if (port ) {
+ sprintf(mybuf, "*.%xH", port);
+ upHex(mybuf);
+ } else
+ sprintf(mybuf, "*.*");
+ return (mybuf);
+ }
+
+ if (bcmp(ns_bh, work.x_host.c_host, 6) == 0) {
+ host = "any";
+ } else if (bcmp(ns_nullh, work.x_host.c_host, 6) == 0) {
+ host = "*";
+ } else {
+ q = work.x_host.c_host;
+ sprintf(chost, "%02x%02x%02x%02x%02x%02xH",
+ q[0], q[1], q[2], q[3], q[4], q[5]);
+ for (p = chost; *p == '0' && p < chost + 12; p++);
+ host = p;
+ }
+ if (port)
+ sprintf(cport, ".%xH", htons(port));
+ else
+ *cport = 0;
+
+ sprintf(mybuf,"%xH.%s%s", ntohl(net.long_e), host, cport);
+ upHex(mybuf);
+ return(mybuf);
+}
+
+char *
+ns_phost(sns)
+struct sockaddr_ns *sns;
+{
+ struct sockaddr_ns work;
+ static union ns_net ns_zeronet;
+ char *p;
+
+ work = *sns;
+ work.sns_addr.x_port = 0;
+ work.sns_addr.x_net = ns_zeronet;
+
+ p = ns_print(&work);
+ if (strncmp("0H.", p, 3) == 0) p += 3;
+ return(p);
+}
+upHex(p0)
+char *p0;
+{
+ register char *p = p0;
+ for (; *p; p++) switch (*p) {
+
+ case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+ *p += ('A' - 'a');
+ }