+
+#define UC(b) (((int)(b))&0xff)
+
+putnet(f, v)
+ FILE *f;
+ u_long v;
+{
+ register char *a = (char *)&v;
+
+ if (UC(a[0]&0x80) == 0)
+ fprintf(f, "%d", UC(a[0]));
+ else if ((UC(a[0])&0x40) == 0)
+ fprintf(f, "%d.%d", UC(a[0]), UC(a[1]));
+ else
+ fprintf(f, "%d.%d.%d", UC(a[0]), UC(a[1]), UC(a[2]));
+}
+
+putaddr(f, v)
+ FILE *f;
+ u_long v;
+{
+ register char *a = (char *)&v;
+ char buf[32];
+
+ sprintf(buf,"%d.%d.%d.%d", UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]));
+ fprintf(f, "%-16.16s", buf);
+}
+
+freenames(list)
+ struct name *list;
+{
+ register struct name *nl, *nl2;
+
+ nl2 = list;
+ while (nl = nl2) {
+ nl2 = nl->name_link;
+ free(nl->name_val);
+ free((char *)nl);
+ }
+}
+struct gateway {
+ struct gateway *g_link;
+ int g_net;
+};
+
+struct gateway *gateways = 0;
+
+checkgateway(net)
+ register int net;
+{
+ register struct gateway *gp;
+
+ for (gp = gateways; gp; gp = gp->g_link)
+ if (gp->g_net == net)
+ return (1);
+ return (0);
+}
+
+savegateway(net)
+ int net;
+{
+ register struct gateway *gp;
+
+ gp = (struct gateway *)malloc(sizeof (struct gateway));
+ if (gp == 0) {
+ fprintf(stderr, "htable: out of memory\n");
+ exit(1);
+ }
+ gp->g_link = gateways;
+ gp->g_net = net;
+ gateways = gp;
+}
+