MINOR: protocols: always pass a "port" argument to the listener creation

It's a shame that cfgparse() has to make special cases of each protocol
just to cast the port to the target address family. Let's pass the port
in argument to the function. The unix listener simply ignores it.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index fc346b9..9752b81 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -299,15 +299,13 @@
 			l->state = LI_INIT;
 
 			if (ss.ss_family == AF_INET) {
-				((struct sockaddr_in *)(&l->addr))->sin_port = htons(port);
-				tcpv4_add_listener(l);
+				tcpv4_add_listener(l, port);
 			}
 			else if (ss.ss_family == AF_INET6) {
-				((struct sockaddr_in6 *)(&l->addr))->sin6_port = htons(port);
-				tcpv6_add_listener(l);
+				tcpv6_add_listener(l, port);
 			}
 			else {
-				uxst_add_listener(l);
+				uxst_add_listener(l, port);
 			}
 
 			jobs++;
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 2bbde7a..6b1505a 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -1137,30 +1137,32 @@
 	return err;
 }
 
-/* Add listener to the list of tcpv4 listeners. The listener's state
- * is automatically updated from LI_INIT to LI_ASSIGNED. The number of
- * listeners is updated. This is the function to use to add a new listener.
+/* Add <listener> to the list of tcpv4 listeners, on port <port>. The
+ * listener's state is automatically updated from LI_INIT to LI_ASSIGNED.
+ * The number of listeners for the protocol is updated.
  */
-void tcpv4_add_listener(struct listener *listener)
+void tcpv4_add_listener(struct listener *listener, int port)
 {
 	if (listener->state != LI_INIT)
 		return;
 	listener->state = LI_ASSIGNED;
 	listener->proto = &proto_tcpv4;
+	((struct sockaddr_in *)(&listener->addr))->sin_port = htons(port);
 	LIST_ADDQ(&proto_tcpv4.listeners, &listener->proto_list);
 	proto_tcpv4.nb_listeners++;
 }
 
-/* Add listener to the list of tcpv4 listeners. The listener's state
- * is automatically updated from LI_INIT to LI_ASSIGNED. The number of
- * listeners is updated. This is the function to use to add a new listener.
+/* Add <listener> to the list of tcpv6 listeners, on port <port>. The
+ * listener's state is automatically updated from LI_INIT to LI_ASSIGNED.
+ * The number of listeners for the protocol is updated.
  */
-void tcpv6_add_listener(struct listener *listener)
+void tcpv6_add_listener(struct listener *listener, int port)
 {
 	if (listener->state != LI_INIT)
 		return;
 	listener->state = LI_ASSIGNED;
 	listener->proto = &proto_tcpv6;
+	((struct sockaddr_in *)(&listener->addr))->sin_port = htons(port);
 	LIST_ADDQ(&proto_tcpv6.listeners, &listener->proto_list);
 	proto_tcpv6.nb_listeners++;
 }
diff --git a/src/proto_uxst.c b/src/proto_uxst.c
index ac14d3b..767cd16 100644
--- a/src/proto_uxst.c
+++ b/src/proto_uxst.c
@@ -365,11 +365,11 @@
 	return ERR_NONE;
 }
 
-/* Add a listener to the list of unix stream listeners. The listener's state
- * is automatically updated from LI_INIT to LI_ASSIGNED. The number of
- * listeners is updated. This is the function to use to add a new listener.
+/* Add <listener> to the list of unix stream listeners (port is ignored). The
+ * listener's state is automatically updated from LI_INIT to LI_ASSIGNED.
+ * The number of listeners for the protocol is updated.
  */
-void uxst_add_listener(struct listener *listener)
+void uxst_add_listener(struct listener *listener, int port)
 {
 	if (listener->state != LI_INIT)
 		return;