@@ -80,12 +80,15 @@ int settimeo(int fd, int timeout_ms)
80
80
81
81
#define save_errno_close (fd ) ({ int __save = errno; close(fd); errno = __save; })
82
82
83
- static int __start_server (int type , const struct sockaddr * addr , socklen_t addrlen ,
84
- const struct network_helper_opts * opts )
83
+ int start_server_addr (int type , const struct sockaddr_storage * addr , socklen_t addrlen ,
84
+ const struct network_helper_opts * opts )
85
85
{
86
86
int fd ;
87
87
88
- fd = socket (addr -> sa_family , type , opts -> proto );
88
+ if (!opts )
89
+ opts = & default_opts ;
90
+
91
+ fd = socket (addr -> ss_family , type , opts -> proto );
89
92
if (fd < 0 ) {
90
93
log_err ("Failed to create server socket" );
91
94
return -1 ;
@@ -100,7 +103,7 @@ static int __start_server(int type, const struct sockaddr *addr, socklen_t addrl
100
103
goto error_close ;
101
104
}
102
105
103
- if (bind (fd , addr , addrlen ) < 0 ) {
106
+ if (bind (fd , ( struct sockaddr * ) addr , addrlen ) < 0 ) {
104
107
log_err ("Failed to bind socket" );
105
108
goto error_close ;
106
109
}
@@ -131,7 +134,7 @@ int start_server_str(int family, int type, const char *addr_str, __u16 port,
131
134
if (make_sockaddr (family , addr_str , port , & addr , & addrlen ))
132
135
return -1 ;
133
136
134
- return __start_server (type , ( struct sockaddr * ) & addr , addrlen , opts );
137
+ return start_server_addr (type , & addr , addrlen , opts );
135
138
}
136
139
137
140
int start_server (int family , int type , const char * addr_str , __u16 port ,
@@ -173,7 +176,7 @@ int *start_reuseport_server(int family, int type, const char *addr_str,
173
176
if (!fds )
174
177
return NULL ;
175
178
176
- fds [0 ] = __start_server (type , ( struct sockaddr * ) & addr , addrlen , & opts );
179
+ fds [0 ] = start_server_addr (type , & addr , addrlen , & opts );
177
180
if (fds [0 ] == -1 )
178
181
goto close_fds ;
179
182
nr_fds = 1 ;
@@ -182,7 +185,7 @@ int *start_reuseport_server(int family, int type, const char *addr_str,
182
185
goto close_fds ;
183
186
184
187
for (; nr_fds < nr_listens ; nr_fds ++ ) {
185
- fds [nr_fds ] = __start_server (type , ( struct sockaddr * ) & addr , addrlen , & opts );
188
+ fds [nr_fds ] = start_server_addr (type , & addr , addrlen , & opts );
186
189
if (fds [nr_fds ] == -1 )
187
190
goto close_fds ;
188
191
}
@@ -194,15 +197,6 @@ int *start_reuseport_server(int family, int type, const char *addr_str,
194
197
return NULL ;
195
198
}
196
199
197
- int start_server_addr (int type , const struct sockaddr_storage * addr , socklen_t len ,
198
- const struct network_helper_opts * opts )
199
- {
200
- if (!opts )
201
- opts = & default_opts ;
202
-
203
- return __start_server (type , (struct sockaddr * )addr , len , opts );
204
- }
205
-
206
200
void free_fds (int * fds , unsigned int nr_close_fds )
207
201
{
208
202
if (fds ) {
0 commit comments