MINOR: listener: now use a generic add_listener() function

With the removal of the family-specific port setting, all protocol had
exactly the same implementation of ->add(). A generic one was created
with the name "default_add_listener" so that all other ones can now be
removed. The API was slightly adjusted so that the protocol and the
listener are passed instead of the listener and the port.

Note that all protocols continue to provide this ->add() method instead
of routinely calling default_add_listener() from create_listeners(). This
makes sure that any non-standard protocol will still be able to intercept
the listener addition if needed.

This could be backported to 2.3 along with the few previous patches on
listners as a pure code cleanup.

(cherry picked from commit d1f250f87b8850f24456e62140509e612f8b3415)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index 7c7670a..30a0045 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -49,8 +49,6 @@
 static int tcp_resume_receiver(struct receiver *rx);
 static void tcp_enable_listener(struct listener *listener);
 static void tcp_disable_listener(struct listener *listener);
-static void tcpv4_add_listener(struct listener *listener, int port);
-static void tcpv6_add_listener(struct listener *listener, int port);
 
 /* Note: must not be declared <const> as its list will be overwritten */
 static struct protocol proto_tcpv4 = {
@@ -60,7 +58,7 @@
 	.sock_domain = AF_INET,
 	.sock_type = SOCK_STREAM,
 	.sock_prot = IPPROTO_TCP,
-	.add = tcpv4_add_listener,
+	.add = default_add_listener,
 	.listen = tcp_bind_listener,
 	.enable = tcp_enable_listener,
 	.disable = tcp_disable_listener,
@@ -90,7 +88,7 @@
 	.sock_domain = AF_INET6,
 	.sock_type = SOCK_STREAM,
 	.sock_prot = IPPROTO_TCP,
-	.add = tcpv6_add_listener,
+	.add = default_add_listener,
 	.listen = tcp_bind_listener,
 	.enable = tcp_enable_listener,
 	.disable = tcp_disable_listener,
@@ -712,40 +710,6 @@
 	return err;
 }
 
-/* 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.
- *
- * Must be called with proto_lock held.
- *
- */
-static void tcpv4_add_listener(struct listener *listener, int port)
-{
-	if (listener->state != LI_INIT)
-		return;
-	listener_set_state(listener, LI_ASSIGNED);
-	listener->rx.proto = &proto_tcpv4;
-	LIST_ADDQ(&proto_tcpv4.receivers, &listener->rx.proto_list);
-	proto_tcpv4.nb_receivers++;
-}
-
-/* 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.
- *
- * Must be called with proto_lock held.
- *
- */
-static void tcpv6_add_listener(struct listener *listener, int port)
-{
-	if (listener->state != LI_INIT)
-		return;
-	listener_set_state(listener, LI_ASSIGNED);
-	listener->rx.proto = &proto_tcpv6;
-	LIST_ADDQ(&proto_tcpv6.receivers, &listener->rx.proto_list);
-	proto_tcpv6.nb_receivers++;
-}
-
 /* Enable receipt of incoming connections for listener <l>. The receiver must
  * still be valid.
  */