/*----- Address handling --------------------------------------------------*/
const struct addrfam aftab[] = {
-#define DEF(af) { AF_##af, #af },
+#ifdef HAVE_LIBADNS
+# define DEF(af, qf) { AF_##af, #af, adns_qf_##qf },
+#else
+# define DEF(af, qf) { AF_##af, #af },
+#endif
ADDRFAM(DEF)
#undef DEF
};
}
}
+/* --- @getport@, @setport@ --- *
+ *
+ * Arguments: @addr *a@ = a network address
+ * @unsigned port@ = port number to set
+ *
+ * Returns: ---
+ *
+ * Use: Retrieves or sets the port number in an address structure.
+ */
+
+unsigned getport(addr *a)
+{
+ switch (a->sa.sa_family) {
+ case AF_INET: return (ntohs(a->sin.sin_port)); break;
+ default: abort();
+ }
+}
+
+void setport(addr *a, unsigned port)
+{
+ switch (a->sa.sa_family) {
+ case AF_INET: a->sin.sin_port = htons(port); break;
+ default: abort();
+ }
+}
+
/*----- That's all, folks -------------------------------------------------*/