3 * @brief The listening socket is managed.
6 * L7VSD: Linux Virtual Server for Layer7 Load Balancing
7 * Copyright (C) 2005 NTT COMWARE Corporation.
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public
11 * License as published by the Free Software Foundation; either
12 * version 2.1 of the License, or (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with this library; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
24 **********************************************************************/
28 #include <netinet/in.h>
33 // listen socket datatype. accepts client connections.
35 struct sockaddr_in addr;
37 struct l7vs_iomux* iom;
50 extern int l7vs_lsock_init();
51 extern void l7vs_lsock_fini();
52 extern struct l7vs_lsock* l7vs_lsock_get( struct sockaddr_in*, uint8_t, int );
53 extern void l7vs_lsock_put( struct l7vs_lsock* );
54 extern struct l7vs_lsock* l7vs_lsock_table_lookup( struct sockaddr_in*, uint8_t );
55 extern void l7vs_lsock_add_service( struct l7vs_lsock*, struct l7vs_service* );
56 extern void l7vs_lsock_remove_service( struct l7vs_lsock*, struct l7vs_service* );
58 extern int l7vs_lsock_select_service(
63 struct l7vs_service**,
66 * serialize struct sockaddr_in
68 * @param[out] ret serialized string
69 * @param[in] dest source sockaddr_in
72 inline void l7vs_lsock_sockaddr_in_c_str(char* ret, const struct sockaddr_in* addr)
75 snprintf(ret, DEBUG_STR_LEN, "(nil)");
79 snprintf(ret, DEBUG_STR_LEN,
83 , inet_ntoa(addr->sin_addr)
84 , ntohs(addr->sin_port));
88 * serialize struct l7vs_lsock
90 * @param[out] ret serialized string
91 * @param[in] lsock source l7vs_lsock
94 inline void l7vs_lsock_c_str(char* ret, const struct l7vs_lsock* lsock)
96 char addr_str[DEBUG_STR_LEN];
97 char iomux_str[DEBUG_STR_LEN];
100 snprintf(ret, DEBUG_STR_LEN, "(nil)");
104 l7vs_lsock_sockaddr_in_c_str(addr_str,&(lsock->addr));
105 l7vs_iomux_c_str(iomux_str,lsock->iom);
106 snprintf(ret, DEBUG_STR_LEN,
121 #endif //L7VS_LSOCK_H