chiark / gitweb /
server/: Institute `address family table'; contemplate multiple sockets.
[tripe] / server / servutil.c
index 707213968f9dd2be252e7485c313c3bbbce7e4e5..70776ddad9ab19539ef0d6380e4271181dc610cb 100644 (file)
@@ -121,6 +121,30 @@ int mystrieq(const char *x, const char *y)
   }
 }
 
+/*----- Address handling --------------------------------------------------*/
+
+const struct addrfam aftab[] = {
+#define DEF(af) { AF_##af, #af },
+  ADDRFAM(DEF)
+#undef DEF
+};
+
+/* --- @afix@ --- *
+ *
+ * Arguments:  @int af@ = an address family code
+ *
+ * Returns:    The index of the address family's record in @aftab@, or @-1@.
+ */
+
+int afix(int af)
+{
+  int i;
+
+  for (i = 0; i < NADDRFAM; i++)
+    if (af == aftab[i].af) return (i);
+  return (-1);
+}
+
 /* --- @addrsz@ --- *
  *
  * Arguments:  @const addr *a@ = a network address