/src/kamailio/src/core/ip_addr.h
Line | Count | Source (jump to first uncovered line) |
1 | | /** |
2 | | * ip address family related structures |
3 | | * |
4 | | * Copyright (C) 2001-2003 FhG Fokus |
5 | | * |
6 | | * This file is part of Kamailio, a free SIP server. |
7 | | * |
8 | | * Kamailio is free software; you can redistribute it and/or modify |
9 | | * it under the terms of the GNU General Public License as published by |
10 | | * the Free Software Foundation; either version 2 of the License, or |
11 | | * (at your option) any later version |
12 | | * |
13 | | * Kamailio is distributed in the hope that it will be useful, |
14 | | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | | * GNU General Public License for more details. |
17 | | * |
18 | | * You should have received a copy of the GNU General Public License |
19 | | * along with this program; if not, write to the Free Software |
20 | | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
21 | | */ |
22 | | /*! |
23 | | * \file |
24 | | * \brief Kamailio core :: ip address family related structures |
25 | | * \ingroup core |
26 | | * Module: \ref core |
27 | | */ |
28 | | |
29 | | #ifndef ip_addr_h |
30 | | #define ip_addr_h |
31 | | |
32 | | #include <string.h> |
33 | | #include <sys/types.h> |
34 | | #include <sys/socket.h> |
35 | | #include <netinet/in.h> |
36 | | #include <netdb.h> |
37 | | #include "str.h" |
38 | | #include "compiler_opt.h" |
39 | | #include "ut.h" |
40 | | |
41 | | |
42 | | #include "dprint.h" |
43 | | |
44 | | extern str ksr_ipv6_hex_style; |
45 | | |
46 | | typedef enum sip_protos |
47 | | { |
48 | | PROTO_NONE, |
49 | | PROTO_UDP, |
50 | | PROTO_TCP, |
51 | | PROTO_TLS, |
52 | | PROTO_SCTP, |
53 | | PROTO_WS, |
54 | | PROTO_WSS, |
55 | | PROTO_OTHER |
56 | | } sip_protos_t; |
57 | 0 | #define PROTO_LAST PROTO_OTHER |
58 | | |
59 | | #ifdef USE_COMP |
60 | | typedef enum comp_methods |
61 | | { |
62 | | COMP_NONE, |
63 | | COMP_SIGCOMP, |
64 | | COMP_SERGZ |
65 | | } comp_methods_t; |
66 | | #endif |
67 | | |
68 | | typedef struct ip_addr |
69 | | { |
70 | | unsigned int af; /* address family: AF_INET6 or AF_INET */ |
71 | | unsigned int len; /* address len, 16 or 4 */ |
72 | | |
73 | | /* 64 bits aligned address */ |
74 | | union |
75 | | { |
76 | | unsigned long addrl[16 / sizeof(long)]; /* long format*/ |
77 | | unsigned int addr32[4]; |
78 | | unsigned short addr16[8]; |
79 | | unsigned char addr[16]; |
80 | | } u; |
81 | | } ip_addr_t; |
82 | | |
83 | | typedef struct net |
84 | | { |
85 | | struct ip_addr ip; |
86 | | struct ip_addr mask; |
87 | | } sr_net_t; |
88 | | |
89 | | typedef union sockaddr_union |
90 | | { |
91 | | struct sockaddr s; |
92 | | struct sockaddr_in sin; |
93 | | struct sockaddr_in6 sin6; |
94 | | struct sockaddr_storage sas; |
95 | | } sr_sockaddr_union_t; |
96 | | |
97 | | |
98 | | typedef enum si_flags |
99 | | { |
100 | | SI_NONE = 0, |
101 | | SI_IS_IP = (1 << 0), |
102 | | SI_IS_LO = (1 << 1), |
103 | | SI_IS_MCAST = (1 << 2), |
104 | | SI_IS_ANY = (1 << 3), |
105 | | SI_IS_MHOMED = (1 << 4), |
106 | | SI_IS_VIRTUAL = (1 << 5), |
107 | | } si_flags_t; |
108 | | |
109 | | typedef struct addr_info |
110 | | { |
111 | | str name; /* name - eg.: foo.bar or 10.0.0.1 */ |
112 | | struct ip_addr address; /*ip address */ |
113 | | str address_str; /*ip address converted to string -- optimization*/ |
114 | | enum si_flags flags; /* SI_IS_IP | SI_IS_LO | SI_IS_MCAST */ |
115 | | union sockaddr_union su; |
116 | | struct addr_info *next; |
117 | | struct addr_info *prev; |
118 | | } addr_info_t; |
119 | | |
120 | | |
121 | | typedef struct advertise_info |
122 | | { |
123 | | str name; /* name - eg.: foo.bar or 10.0.0.1 */ |
124 | | int proto; /* protocol id */ |
125 | | int af; /* address family based on [ ] around name */ |
126 | | unsigned short port_no; /* port number */ |
127 | | short port_pad; /* padding field */ |
128 | | str port_no_str; /* port number converted to string -- optimization*/ |
129 | | str address_str; /* ip address converted to string -- optimization*/ |
130 | | struct ip_addr address; /* ip address */ |
131 | | str sock_str; /* Socket proto, ip, and port as string */ |
132 | | } advertise_info_t; |
133 | | |
134 | | typedef struct socket_info |
135 | | { |
136 | | int socket; |
137 | | int gindex; /* global index in the lists of all sockets */ |
138 | | str name; /* name - eg.: foo.bar or 10.0.0.1 */ |
139 | | struct ip_addr address; /* ip address */ |
140 | | str address_str; /*ip address converted to string -- optimization*/ |
141 | | str port_no_str; /* port number converted to string -- optimization*/ |
142 | | enum si_flags flags; /* SI_IS_IP | SI_IS_LO | SI_IS_MCAST */ |
143 | | union sockaddr_union su; |
144 | | struct socket_info *next; |
145 | | struct socket_info *prev; |
146 | | unsigned short port_no; /* port number */ |
147 | | char proto; /* tcp or udp*/ |
148 | | char proto_pad0; /* padding field */ |
149 | | short proto_pad1; /* padding field */ |
150 | | str sock_str; /* Socket proto, ip, and port as string */ |
151 | | struct addr_info *addr_info_lst; /* extra addresses (e.g. SCTP mh) */ |
152 | | int workers; /* number of worker processes for this socket */ |
153 | | int workers_tcpidx; /* index of workers in tcp children array */ |
154 | | str sockname; /* socket name given in config listen value */ |
155 | | struct advertise_info useinfo; /* details to be used in SIP msg */ |
156 | | #ifdef USE_MCAST |
157 | | str mcast; /* name of interface that should join multicast group*/ |
158 | | #endif /* USE_MCAST */ |
159 | | } socket_info_t; |
160 | | |
161 | | typedef struct socket_attrs |
162 | | { |
163 | | int bindproto; |
164 | | str bindaddr; |
165 | | int bindport; |
166 | | int useproto; |
167 | | str useaddr; |
168 | | int useport; |
169 | | str sockname; |
170 | | int workers; |
171 | | int sflags; |
172 | | } socket_attrs_t; |
173 | | |
174 | | /* send flags */ |
175 | | typedef enum send_flags |
176 | | { |
177 | | SND_F_FORCE_CON_REUSE = (1 << 0), /* reuse an existing connection or fail */ |
178 | | SND_F_CON_CLOSE = (1 << 1), /* close the connection after sending */ |
179 | | SND_F_FORCE_SOCKET = (1 << 2), /* send socket in dst is forced */ |
180 | | } send_flags_t; |
181 | | |
182 | | typedef struct snd_flags |
183 | | { |
184 | | unsigned short f; /* snd flags */ |
185 | | unsigned short blst_imask; /* blocklist ignore mask */ |
186 | | } snd_flags_t; |
187 | | |
188 | | /* recv flags */ |
189 | | typedef enum recv_flags |
190 | | { |
191 | | RECV_F_INTERNAL = (1 << 0), /* message dispatched internally */ |
192 | | RECV_F_PREROUTING = (1 << 1), /* message in pre-routing */ |
193 | | } recv_flags_t; |
194 | | |
195 | | typedef struct receive_info |
196 | | { |
197 | | struct ip_addr src_ip; |
198 | | struct ip_addr dst_ip; |
199 | | unsigned short src_port; /* host byte order */ |
200 | | unsigned short dst_port; /* host byte order */ |
201 | | int proto_reserved1; /* tcp stores the connection id here */ |
202 | | int proto_reserved2; |
203 | | union sockaddr_union src_su; /* useful for replies*/ |
204 | | struct socket_info *bind_address; /* sock_info structure on which |
205 | | * the msg was received */ |
206 | | recv_flags_t rflags; /* flags */ |
207 | | char proto; |
208 | | #ifdef USE_COMP |
209 | | char proto_pad0; /* padding field */ |
210 | | short comp; /* compression */ |
211 | | #else |
212 | | char proto_pad0; /* padding field */ |
213 | | short proto_pad1; /* padding field */ |
214 | | #endif |
215 | | /* no need for dst_su yet */ |
216 | | } receive_info_t; |
217 | | |
218 | | |
219 | | typedef struct dest_info |
220 | | { |
221 | | struct socket_info *send_sock; |
222 | | union sockaddr_union to; |
223 | | int id; /* tcp stores the connection id here */ |
224 | | snd_flags_t send_flags; |
225 | | char proto; |
226 | | #ifdef USE_COMP |
227 | | char proto_pad0; /* padding field */ |
228 | | short comp; |
229 | | #else |
230 | | char proto_pad0; /* padding field */ |
231 | | short proto_pad1; /* padding field */ |
232 | | #endif |
233 | | } dest_info_t; |
234 | | |
235 | | |
236 | | typedef struct ksr_coninfo |
237 | | { |
238 | | ip_addr_t src_ip; |
239 | | ip_addr_t dst_ip; |
240 | | unsigned short src_port; /* host byte order */ |
241 | | unsigned short dst_port; /* host byte order */ |
242 | | int proto; |
243 | | socket_info_t *csocket; |
244 | | } ksr_coninfo_t; |
245 | | |
246 | | typedef struct sr_net_info |
247 | | { |
248 | | str data; |
249 | | unsigned int bufsize; |
250 | | receive_info_t *rcv; |
251 | | dest_info_t *dst; |
252 | | } sr_net_info_t; |
253 | | |
254 | | sr_net_info_t *ksr_evrt_rcvnetinfo_get(void); |
255 | | |
256 | | #define SND_FLAGS_INIT(sflags) \ |
257 | | do { \ |
258 | | (sflags)->f = 0; \ |
259 | | (sflags)->blst_imask = 0; \ |
260 | | } while(0) |
261 | | |
262 | | |
263 | | #define SND_FLAGS_OR(dst, src1, src2) \ |
264 | 0 | do { \ |
265 | 0 | (dst)->f = (src1)->f | (src2)->f; \ |
266 | 0 | (dst)->blst_imask = (src1)->blst_imask | (src2)->blst_imask; \ |
267 | 0 | } while(0) |
268 | | |
269 | | |
270 | | #define SND_FLAGS_AND(dst, src1, src2) \ |
271 | | do { \ |
272 | | (dst)->f = (src1)->f & (src2)->f; \ |
273 | | (dst)->blst_imask = (src1)->blst_imask & (src2)->blst_imask; \ |
274 | | } while(0) |
275 | | |
276 | | |
277 | | /* list of names for multi-homed sockets that need to bind on |
278 | | * multiple addresses in the same time (sctp ) */ |
279 | | typedef struct name_lst |
280 | | { |
281 | | char *name; |
282 | | struct name_lst *next; |
283 | | int flags; |
284 | | } name_lst_t; |
285 | | |
286 | | |
287 | | typedef struct socket_id |
288 | | { |
289 | | struct name_lst *addr_lst; /* address list, the first one must |
290 | | * be present and is the main one |
291 | | * (in case of multihoming sctp) */ |
292 | | int flags; |
293 | | int proto; |
294 | | int port; |
295 | | struct socket_id *next; |
296 | | } socket_id_t; |
297 | | |
298 | | |
299 | | /* len of the sockaddr */ |
300 | | #ifdef HAVE_SOCKADDR_SA_LEN |
301 | | #define sockaddru_len(su) ((su).s.sa_len) |
302 | | #else |
303 | | #define sockaddru_len(su) \ |
304 | 0 | (((su).s.sa_family == AF_INET6) ? sizeof(struct sockaddr_in6) \ |
305 | 0 | : sizeof(struct sockaddr_in)) |
306 | | #endif /* HAVE_SOCKADDR_SA_LEN*/ |
307 | | |
308 | | /* inits an ip_addr with the addr. info from a hostent structure |
309 | | * ip = struct ip_addr* |
310 | | * he= struct hostent* |
311 | | */ |
312 | | #define hostent2ip_addr(ip, he, addr_no) \ |
313 | 0 | do { \ |
314 | 0 | (ip)->af = (he)->h_addrtype; \ |
315 | 0 | (ip)->len = (he)->h_length; \ |
316 | 0 | memcpy((ip)->u.addr, (he)->h_addr_list[(addr_no)], (ip)->len); \ |
317 | 0 | } while(0) |
318 | | |
319 | | |
320 | | /* gets the protocol family corresponding to a specific address family |
321 | | * ( PF_INET - AF_INET, PF_INET6 - AF_INET6, af for others) |
322 | | */ |
323 | | #define AF2PF(af) \ |
324 | 0 | (((af) == AF_INET) ? PF_INET : ((af) == AF_INET6) ? PF_INET6 : (af)) |
325 | | |
326 | | |
327 | | struct net *mk_new_net(struct ip_addr *ip, struct ip_addr *mask); |
328 | | struct net *mk_new_net_bitlen(struct ip_addr *ip, unsigned int bitlen); |
329 | | int mk_net(struct net *n, struct ip_addr *ip, struct ip_addr *mask); |
330 | | int mk_net_bitlen(struct net *n, struct ip_addr *ip, unsigned int bitlen); |
331 | | int mk_net_str(struct net *dst, str *s); |
332 | | |
333 | | void print_ip(char *prefix, struct ip_addr *ip, char *suffix); |
334 | | void stdout_print_ip(struct ip_addr *ip); |
335 | | void print_net(struct net *net); |
336 | | |
337 | | char *get_proto_name(unsigned int proto); |
338 | 0 | #define proto2a get_proto_name |
339 | | |
340 | | int get_valid_proto_string( |
341 | | unsigned int iproto, int utype, int vtype, str *sproto); |
342 | | int get_valid_proto_id(str *protoval); |
343 | | |
344 | | char *get_af_name(unsigned int af); |
345 | | |
346 | | #ifdef USE_MCAST |
347 | | /* Returns 1 if the given address is a multicast address */ |
348 | | int is_mcast(struct ip_addr *ip); |
349 | | #endif /* USE_MCAST */ |
350 | | |
351 | | /* returns 1 if the given ip address is INADDR_ANY or IN6ADDR_ANY, |
352 | | * 0 otherwise */ |
353 | | inline static int ip_addr_any(const struct ip_addr *ip) |
354 | 0 | { |
355 | 0 | int r; |
356 | 0 | int l; |
357 | |
|
358 | 0 | l = ip->len / 4; |
359 | 0 | for(r = 0; r < l; r++) |
360 | 0 | if(ip->u.addr32[r] != 0) |
361 | 0 | return 0; |
362 | 0 | return 1; |
363 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:ip_addr_any Unexecuted instantiation: dprint.c:ip_addr_any Unexecuted instantiation: error.c:ip_addr_any Unexecuted instantiation: main.c:ip_addr_any Unexecuted instantiation: modparam.c:ip_addr_any Unexecuted instantiation: msg_parser.c:ip_addr_any Unexecuted instantiation: nonsip_hooks.c:ip_addr_any Unexecuted instantiation: parse_addr_spec.c:ip_addr_any Unexecuted instantiation: parse_contact.c:ip_addr_any Unexecuted instantiation: parse_content.c:ip_addr_any Unexecuted instantiation: parse_cseq.c:ip_addr_any Unexecuted instantiation: parse_disposition.c:ip_addr_any Unexecuted instantiation: parse_diversion.c:ip_addr_any Unexecuted instantiation: parse_fline.c:ip_addr_any Unexecuted instantiation: parse_from.c:ip_addr_any Unexecuted instantiation: parse_identityinfo.c:ip_addr_any Unexecuted instantiation: parse_methods.c:ip_addr_any Unexecuted instantiation: parse_ppi_pai.c:ip_addr_any Unexecuted instantiation: parse_privacy.c:ip_addr_any Unexecuted instantiation: parse_refer_to.c:ip_addr_any Unexecuted instantiation: parse_rr.c:ip_addr_any Unexecuted instantiation: parse_to.c:ip_addr_any Unexecuted instantiation: parse_via.c:ip_addr_any Unexecuted instantiation: ppcfg.c:ip_addr_any Unexecuted instantiation: pt.c:ip_addr_any Unexecuted instantiation: pv_core.c:ip_addr_any Unexecuted instantiation: pvapi.c:ip_addr_any Unexecuted instantiation: q_malloc.c:ip_addr_any Unexecuted instantiation: raw_sock.c:ip_addr_any Unexecuted instantiation: re.c:ip_addr_any Unexecuted instantiation: receive.c:ip_addr_any Unexecuted instantiation: resolve.c:ip_addr_any Unexecuted instantiation: route.c:ip_addr_any Unexecuted instantiation: route_struct.c:ip_addr_any Unexecuted instantiation: rvalue.c:ip_addr_any Unexecuted instantiation: script_cb.c:ip_addr_any Unexecuted instantiation: sctp_core.c:ip_addr_any Unexecuted instantiation: sdp.c:ip_addr_any Unexecuted instantiation: sdp_helpr_funcs.c:ip_addr_any Unexecuted instantiation: select.c:ip_addr_any Unexecuted instantiation: select_core.c:ip_addr_any Unexecuted instantiation: shm.c:ip_addr_any Unexecuted instantiation: shm_init.c:ip_addr_any Unexecuted instantiation: socket_info.c:ip_addr_any Unexecuted instantiation: sr_module.c:ip_addr_any Unexecuted instantiation: srapi.c:ip_addr_any Unexecuted instantiation: strutils.c:ip_addr_any Unexecuted instantiation: switch.c:ip_addr_any Unexecuted instantiation: tcp_main.c:ip_addr_any Unexecuted instantiation: tcp_options.c:ip_addr_any Unexecuted instantiation: tcp_read.c:ip_addr_any Unexecuted instantiation: tcp_stats.c:ip_addr_any Unexecuted instantiation: timer.c:ip_addr_any Unexecuted instantiation: timer_proc.c:ip_addr_any Unexecuted instantiation: tls_hooks.c:ip_addr_any Unexecuted instantiation: tlsf_malloc.c:ip_addr_any Unexecuted instantiation: udp_server.c:ip_addr_any Unexecuted instantiation: usr_avp.c:ip_addr_any Unexecuted instantiation: ut.c:ip_addr_any Unexecuted instantiation: action.c:ip_addr_any Unexecuted instantiation: async_task.c:ip_addr_any Unexecuted instantiation: cfg.tab.c:ip_addr_any Unexecuted instantiation: cfg_core.c:ip_addr_any Unexecuted instantiation: cfg_select.c:ip_addr_any Unexecuted instantiation: cfg_struct.c:ip_addr_any Unexecuted instantiation: core_cmd.c:ip_addr_any Unexecuted instantiation: counters.c:ip_addr_any Unexecuted instantiation: daemonize.c:ip_addr_any Unexecuted instantiation: data_lump.c:ip_addr_any Unexecuted instantiation: data_lump_rpl.c:ip_addr_any Unexecuted instantiation: digest.c:ip_addr_any Unexecuted instantiation: dns_cache.c:ip_addr_any Unexecuted instantiation: dset.c:ip_addr_any Unexecuted instantiation: dst_blocklist.c:ip_addr_any Unexecuted instantiation: events.c:ip_addr_any Unexecuted instantiation: f_malloc.c:ip_addr_any Unexecuted instantiation: flags.c:ip_addr_any Unexecuted instantiation: fmsg.c:ip_addr_any Unexecuted instantiation: forward.c:ip_addr_any Unexecuted instantiation: hf.c:ip_addr_any Unexecuted instantiation: io_wait.c:ip_addr_any Unexecuted instantiation: ip_addr.c:ip_addr_any Unexecuted instantiation: kemi.c:ip_addr_any Unexecuted instantiation: lex.yy.c:ip_addr_any Unexecuted instantiation: local_timer.c:ip_addr_any Unexecuted instantiation: lvalue.c:ip_addr_any Unexecuted instantiation: mod_fix.c:ip_addr_any Unexecuted instantiation: msg_translator.c:ip_addr_any Unexecuted instantiation: onsend.c:ip_addr_any Unexecuted instantiation: parse_allow.c:ip_addr_any Unexecuted instantiation: parse_body.c:ip_addr_any Unexecuted instantiation: parse_date.c:ip_addr_any Unexecuted instantiation: parse_identity.c:ip_addr_any Unexecuted instantiation: parse_rpid.c:ip_addr_any Unexecuted instantiation: proxy.c:ip_addr_any Unexecuted instantiation: stun.c:ip_addr_any Unexecuted instantiation: fuzz_uri.c:ip_addr_any |
364 | | |
365 | | |
366 | | /* returns 1 if the given ip address is a loopback address |
367 | | * 0 otherwise */ |
368 | | inline static int ip_addr_loopback(const struct ip_addr *ip) |
369 | 0 | { |
370 | 0 | if(ip->af == AF_INET) |
371 | 0 | return ip->u.addr32[0] == htonl(INADDR_LOOPBACK); |
372 | 0 | else if(ip->af == AF_INET6) |
373 | 0 | return IN6_IS_ADDR_LOOPBACK((struct in6_addr *)ip->u.addr32); |
374 | 0 | return 0; |
375 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:ip_addr_loopback Unexecuted instantiation: dprint.c:ip_addr_loopback Unexecuted instantiation: error.c:ip_addr_loopback Unexecuted instantiation: main.c:ip_addr_loopback Unexecuted instantiation: modparam.c:ip_addr_loopback Unexecuted instantiation: msg_parser.c:ip_addr_loopback Unexecuted instantiation: nonsip_hooks.c:ip_addr_loopback Unexecuted instantiation: parse_addr_spec.c:ip_addr_loopback Unexecuted instantiation: parse_contact.c:ip_addr_loopback Unexecuted instantiation: parse_content.c:ip_addr_loopback Unexecuted instantiation: parse_cseq.c:ip_addr_loopback Unexecuted instantiation: parse_disposition.c:ip_addr_loopback Unexecuted instantiation: parse_diversion.c:ip_addr_loopback Unexecuted instantiation: parse_fline.c:ip_addr_loopback Unexecuted instantiation: parse_from.c:ip_addr_loopback Unexecuted instantiation: parse_identityinfo.c:ip_addr_loopback Unexecuted instantiation: parse_methods.c:ip_addr_loopback Unexecuted instantiation: parse_ppi_pai.c:ip_addr_loopback Unexecuted instantiation: parse_privacy.c:ip_addr_loopback Unexecuted instantiation: parse_refer_to.c:ip_addr_loopback Unexecuted instantiation: parse_rr.c:ip_addr_loopback Unexecuted instantiation: parse_to.c:ip_addr_loopback Unexecuted instantiation: parse_via.c:ip_addr_loopback Unexecuted instantiation: ppcfg.c:ip_addr_loopback Unexecuted instantiation: pt.c:ip_addr_loopback Unexecuted instantiation: pv_core.c:ip_addr_loopback Unexecuted instantiation: pvapi.c:ip_addr_loopback Unexecuted instantiation: q_malloc.c:ip_addr_loopback Unexecuted instantiation: raw_sock.c:ip_addr_loopback Unexecuted instantiation: re.c:ip_addr_loopback Unexecuted instantiation: receive.c:ip_addr_loopback Unexecuted instantiation: resolve.c:ip_addr_loopback Unexecuted instantiation: route.c:ip_addr_loopback Unexecuted instantiation: route_struct.c:ip_addr_loopback Unexecuted instantiation: rvalue.c:ip_addr_loopback Unexecuted instantiation: script_cb.c:ip_addr_loopback Unexecuted instantiation: sctp_core.c:ip_addr_loopback Unexecuted instantiation: sdp.c:ip_addr_loopback Unexecuted instantiation: sdp_helpr_funcs.c:ip_addr_loopback Unexecuted instantiation: select.c:ip_addr_loopback Unexecuted instantiation: select_core.c:ip_addr_loopback Unexecuted instantiation: shm.c:ip_addr_loopback Unexecuted instantiation: shm_init.c:ip_addr_loopback Unexecuted instantiation: socket_info.c:ip_addr_loopback Unexecuted instantiation: sr_module.c:ip_addr_loopback Unexecuted instantiation: srapi.c:ip_addr_loopback Unexecuted instantiation: strutils.c:ip_addr_loopback Unexecuted instantiation: switch.c:ip_addr_loopback Unexecuted instantiation: tcp_main.c:ip_addr_loopback Unexecuted instantiation: tcp_options.c:ip_addr_loopback Unexecuted instantiation: tcp_read.c:ip_addr_loopback Unexecuted instantiation: tcp_stats.c:ip_addr_loopback Unexecuted instantiation: timer.c:ip_addr_loopback Unexecuted instantiation: timer_proc.c:ip_addr_loopback Unexecuted instantiation: tls_hooks.c:ip_addr_loopback Unexecuted instantiation: tlsf_malloc.c:ip_addr_loopback Unexecuted instantiation: udp_server.c:ip_addr_loopback Unexecuted instantiation: usr_avp.c:ip_addr_loopback Unexecuted instantiation: ut.c:ip_addr_loopback Unexecuted instantiation: action.c:ip_addr_loopback Unexecuted instantiation: async_task.c:ip_addr_loopback Unexecuted instantiation: cfg.tab.c:ip_addr_loopback Unexecuted instantiation: cfg_core.c:ip_addr_loopback Unexecuted instantiation: cfg_select.c:ip_addr_loopback Unexecuted instantiation: cfg_struct.c:ip_addr_loopback Unexecuted instantiation: core_cmd.c:ip_addr_loopback Unexecuted instantiation: counters.c:ip_addr_loopback Unexecuted instantiation: daemonize.c:ip_addr_loopback Unexecuted instantiation: data_lump.c:ip_addr_loopback Unexecuted instantiation: data_lump_rpl.c:ip_addr_loopback Unexecuted instantiation: digest.c:ip_addr_loopback Unexecuted instantiation: dns_cache.c:ip_addr_loopback Unexecuted instantiation: dset.c:ip_addr_loopback Unexecuted instantiation: dst_blocklist.c:ip_addr_loopback Unexecuted instantiation: events.c:ip_addr_loopback Unexecuted instantiation: f_malloc.c:ip_addr_loopback Unexecuted instantiation: flags.c:ip_addr_loopback Unexecuted instantiation: fmsg.c:ip_addr_loopback Unexecuted instantiation: forward.c:ip_addr_loopback Unexecuted instantiation: hf.c:ip_addr_loopback Unexecuted instantiation: io_wait.c:ip_addr_loopback Unexecuted instantiation: ip_addr.c:ip_addr_loopback Unexecuted instantiation: kemi.c:ip_addr_loopback Unexecuted instantiation: lex.yy.c:ip_addr_loopback Unexecuted instantiation: local_timer.c:ip_addr_loopback Unexecuted instantiation: lvalue.c:ip_addr_loopback Unexecuted instantiation: mod_fix.c:ip_addr_loopback Unexecuted instantiation: msg_translator.c:ip_addr_loopback Unexecuted instantiation: onsend.c:ip_addr_loopback Unexecuted instantiation: parse_allow.c:ip_addr_loopback Unexecuted instantiation: parse_body.c:ip_addr_loopback Unexecuted instantiation: parse_date.c:ip_addr_loopback Unexecuted instantiation: parse_identity.c:ip_addr_loopback Unexecuted instantiation: parse_rpid.c:ip_addr_loopback Unexecuted instantiation: proxy.c:ip_addr_loopback Unexecuted instantiation: stun.c:ip_addr_loopback Unexecuted instantiation: fuzz_uri.c:ip_addr_loopback |
376 | | |
377 | | |
378 | | /* creates an ANY ip_addr (filled with 0, af and len properly set) */ |
379 | | inline static void ip_addr_mk_any(int af, struct ip_addr *ip) |
380 | 0 | { |
381 | 0 | ip->af = af; |
382 | 0 | if(likely(af == AF_INET)) { |
383 | 0 | ip->len = 4; |
384 | 0 | ip->u.addr32[0] = 0; |
385 | 0 | } else { |
386 | 0 | ip->len = 16; |
387 | 0 | #if(defined(ULONG_MAX) && ULONG_MAX > 4294967295) || defined LP64 |
388 | | /* long is 64 bits */ |
389 | 0 | ip->u.addrl[0] = 0; |
390 | 0 | ip->u.addrl[1] = 0; |
391 | | #else |
392 | | ip->u.addr32[0] = 0; |
393 | | ip->u.addr32[1] = 0; |
394 | | ip->u.addr32[2] = 0; |
395 | | ip->u.addr32[3] = 0; |
396 | | #endif /* ULONG_MAX */ |
397 | 0 | } |
398 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:ip_addr_mk_any Unexecuted instantiation: dprint.c:ip_addr_mk_any Unexecuted instantiation: error.c:ip_addr_mk_any Unexecuted instantiation: main.c:ip_addr_mk_any Unexecuted instantiation: modparam.c:ip_addr_mk_any Unexecuted instantiation: msg_parser.c:ip_addr_mk_any Unexecuted instantiation: nonsip_hooks.c:ip_addr_mk_any Unexecuted instantiation: parse_addr_spec.c:ip_addr_mk_any Unexecuted instantiation: parse_contact.c:ip_addr_mk_any Unexecuted instantiation: parse_content.c:ip_addr_mk_any Unexecuted instantiation: parse_cseq.c:ip_addr_mk_any Unexecuted instantiation: parse_disposition.c:ip_addr_mk_any Unexecuted instantiation: parse_diversion.c:ip_addr_mk_any Unexecuted instantiation: parse_fline.c:ip_addr_mk_any Unexecuted instantiation: parse_from.c:ip_addr_mk_any Unexecuted instantiation: parse_identityinfo.c:ip_addr_mk_any Unexecuted instantiation: parse_methods.c:ip_addr_mk_any Unexecuted instantiation: parse_ppi_pai.c:ip_addr_mk_any Unexecuted instantiation: parse_privacy.c:ip_addr_mk_any Unexecuted instantiation: parse_refer_to.c:ip_addr_mk_any Unexecuted instantiation: parse_rr.c:ip_addr_mk_any Unexecuted instantiation: parse_to.c:ip_addr_mk_any Unexecuted instantiation: parse_via.c:ip_addr_mk_any Unexecuted instantiation: ppcfg.c:ip_addr_mk_any Unexecuted instantiation: pt.c:ip_addr_mk_any Unexecuted instantiation: pv_core.c:ip_addr_mk_any Unexecuted instantiation: pvapi.c:ip_addr_mk_any Unexecuted instantiation: q_malloc.c:ip_addr_mk_any Unexecuted instantiation: raw_sock.c:ip_addr_mk_any Unexecuted instantiation: re.c:ip_addr_mk_any Unexecuted instantiation: receive.c:ip_addr_mk_any Unexecuted instantiation: resolve.c:ip_addr_mk_any Unexecuted instantiation: route.c:ip_addr_mk_any Unexecuted instantiation: route_struct.c:ip_addr_mk_any Unexecuted instantiation: rvalue.c:ip_addr_mk_any Unexecuted instantiation: script_cb.c:ip_addr_mk_any Unexecuted instantiation: sctp_core.c:ip_addr_mk_any Unexecuted instantiation: sdp.c:ip_addr_mk_any Unexecuted instantiation: sdp_helpr_funcs.c:ip_addr_mk_any Unexecuted instantiation: select.c:ip_addr_mk_any Unexecuted instantiation: select_core.c:ip_addr_mk_any Unexecuted instantiation: shm.c:ip_addr_mk_any Unexecuted instantiation: shm_init.c:ip_addr_mk_any Unexecuted instantiation: socket_info.c:ip_addr_mk_any Unexecuted instantiation: sr_module.c:ip_addr_mk_any Unexecuted instantiation: srapi.c:ip_addr_mk_any Unexecuted instantiation: strutils.c:ip_addr_mk_any Unexecuted instantiation: switch.c:ip_addr_mk_any Unexecuted instantiation: tcp_main.c:ip_addr_mk_any Unexecuted instantiation: tcp_options.c:ip_addr_mk_any Unexecuted instantiation: tcp_read.c:ip_addr_mk_any Unexecuted instantiation: tcp_stats.c:ip_addr_mk_any Unexecuted instantiation: timer.c:ip_addr_mk_any Unexecuted instantiation: timer_proc.c:ip_addr_mk_any Unexecuted instantiation: tls_hooks.c:ip_addr_mk_any Unexecuted instantiation: tlsf_malloc.c:ip_addr_mk_any Unexecuted instantiation: udp_server.c:ip_addr_mk_any Unexecuted instantiation: usr_avp.c:ip_addr_mk_any Unexecuted instantiation: ut.c:ip_addr_mk_any Unexecuted instantiation: action.c:ip_addr_mk_any Unexecuted instantiation: async_task.c:ip_addr_mk_any Unexecuted instantiation: cfg.tab.c:ip_addr_mk_any Unexecuted instantiation: cfg_core.c:ip_addr_mk_any Unexecuted instantiation: cfg_select.c:ip_addr_mk_any Unexecuted instantiation: cfg_struct.c:ip_addr_mk_any Unexecuted instantiation: core_cmd.c:ip_addr_mk_any Unexecuted instantiation: counters.c:ip_addr_mk_any Unexecuted instantiation: daemonize.c:ip_addr_mk_any Unexecuted instantiation: data_lump.c:ip_addr_mk_any Unexecuted instantiation: data_lump_rpl.c:ip_addr_mk_any Unexecuted instantiation: digest.c:ip_addr_mk_any Unexecuted instantiation: dns_cache.c:ip_addr_mk_any Unexecuted instantiation: dset.c:ip_addr_mk_any Unexecuted instantiation: dst_blocklist.c:ip_addr_mk_any Unexecuted instantiation: events.c:ip_addr_mk_any Unexecuted instantiation: f_malloc.c:ip_addr_mk_any Unexecuted instantiation: flags.c:ip_addr_mk_any Unexecuted instantiation: fmsg.c:ip_addr_mk_any Unexecuted instantiation: forward.c:ip_addr_mk_any Unexecuted instantiation: hf.c:ip_addr_mk_any Unexecuted instantiation: io_wait.c:ip_addr_mk_any Unexecuted instantiation: ip_addr.c:ip_addr_mk_any Unexecuted instantiation: kemi.c:ip_addr_mk_any Unexecuted instantiation: lex.yy.c:ip_addr_mk_any Unexecuted instantiation: local_timer.c:ip_addr_mk_any Unexecuted instantiation: lvalue.c:ip_addr_mk_any Unexecuted instantiation: mod_fix.c:ip_addr_mk_any Unexecuted instantiation: msg_translator.c:ip_addr_mk_any Unexecuted instantiation: onsend.c:ip_addr_mk_any Unexecuted instantiation: parse_allow.c:ip_addr_mk_any Unexecuted instantiation: parse_body.c:ip_addr_mk_any Unexecuted instantiation: parse_date.c:ip_addr_mk_any Unexecuted instantiation: parse_identity.c:ip_addr_mk_any Unexecuted instantiation: parse_rpid.c:ip_addr_mk_any Unexecuted instantiation: proxy.c:ip_addr_mk_any Unexecuted instantiation: stun.c:ip_addr_mk_any Unexecuted instantiation: fuzz_uri.c:ip_addr_mk_any |
399 | | |
400 | | |
401 | | /* returns 1 if ip & net.mask == net.ip ; 0 otherwise & -1 on error |
402 | | * [ diff. address families ]) */ |
403 | | inline static int matchnet(const struct ip_addr *ip, const struct net *net) |
404 | 0 | { |
405 | 0 | unsigned int r; |
406 | |
|
407 | 0 | if(ip->af == net->ip.af) { |
408 | 0 | for(r = 0; r < ip->len / 4; r++) { /* ipv4 & ipv6 addresses are |
409 | | * all multiple of 4*/ |
410 | 0 | if((ip->u.addr32[r] & net->mask.u.addr32[r]) |
411 | 0 | != net->ip.u.addr32[r]) { |
412 | 0 | return 0; |
413 | 0 | } |
414 | 0 | } |
415 | 0 | return 1; |
416 | 0 | }; |
417 | 0 | return -1; |
418 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:matchnet Unexecuted instantiation: dprint.c:matchnet Unexecuted instantiation: error.c:matchnet Unexecuted instantiation: main.c:matchnet Unexecuted instantiation: modparam.c:matchnet Unexecuted instantiation: msg_parser.c:matchnet Unexecuted instantiation: nonsip_hooks.c:matchnet Unexecuted instantiation: parse_addr_spec.c:matchnet Unexecuted instantiation: parse_contact.c:matchnet Unexecuted instantiation: parse_content.c:matchnet Unexecuted instantiation: parse_cseq.c:matchnet Unexecuted instantiation: parse_disposition.c:matchnet Unexecuted instantiation: parse_diversion.c:matchnet Unexecuted instantiation: parse_fline.c:matchnet Unexecuted instantiation: parse_from.c:matchnet Unexecuted instantiation: parse_identityinfo.c:matchnet Unexecuted instantiation: parse_methods.c:matchnet Unexecuted instantiation: parse_ppi_pai.c:matchnet Unexecuted instantiation: parse_privacy.c:matchnet Unexecuted instantiation: parse_refer_to.c:matchnet Unexecuted instantiation: parse_rr.c:matchnet Unexecuted instantiation: parse_to.c:matchnet Unexecuted instantiation: parse_via.c:matchnet Unexecuted instantiation: ppcfg.c:matchnet Unexecuted instantiation: pt.c:matchnet Unexecuted instantiation: pv_core.c:matchnet Unexecuted instantiation: pvapi.c:matchnet Unexecuted instantiation: q_malloc.c:matchnet Unexecuted instantiation: raw_sock.c:matchnet Unexecuted instantiation: re.c:matchnet Unexecuted instantiation: receive.c:matchnet Unexecuted instantiation: resolve.c:matchnet Unexecuted instantiation: route.c:matchnet Unexecuted instantiation: route_struct.c:matchnet Unexecuted instantiation: rvalue.c:matchnet Unexecuted instantiation: script_cb.c:matchnet Unexecuted instantiation: sctp_core.c:matchnet Unexecuted instantiation: sdp.c:matchnet Unexecuted instantiation: sdp_helpr_funcs.c:matchnet Unexecuted instantiation: select.c:matchnet Unexecuted instantiation: select_core.c:matchnet Unexecuted instantiation: shm.c:matchnet Unexecuted instantiation: shm_init.c:matchnet Unexecuted instantiation: socket_info.c:matchnet Unexecuted instantiation: sr_module.c:matchnet Unexecuted instantiation: srapi.c:matchnet Unexecuted instantiation: strutils.c:matchnet Unexecuted instantiation: switch.c:matchnet Unexecuted instantiation: tcp_main.c:matchnet Unexecuted instantiation: tcp_options.c:matchnet Unexecuted instantiation: tcp_read.c:matchnet Unexecuted instantiation: tcp_stats.c:matchnet Unexecuted instantiation: timer.c:matchnet Unexecuted instantiation: timer_proc.c:matchnet Unexecuted instantiation: tls_hooks.c:matchnet Unexecuted instantiation: tlsf_malloc.c:matchnet Unexecuted instantiation: udp_server.c:matchnet Unexecuted instantiation: usr_avp.c:matchnet Unexecuted instantiation: ut.c:matchnet Unexecuted instantiation: action.c:matchnet Unexecuted instantiation: async_task.c:matchnet Unexecuted instantiation: cfg.tab.c:matchnet Unexecuted instantiation: cfg_core.c:matchnet Unexecuted instantiation: cfg_select.c:matchnet Unexecuted instantiation: cfg_struct.c:matchnet Unexecuted instantiation: core_cmd.c:matchnet Unexecuted instantiation: counters.c:matchnet Unexecuted instantiation: daemonize.c:matchnet Unexecuted instantiation: data_lump.c:matchnet Unexecuted instantiation: data_lump_rpl.c:matchnet Unexecuted instantiation: digest.c:matchnet Unexecuted instantiation: dns_cache.c:matchnet Unexecuted instantiation: dset.c:matchnet Unexecuted instantiation: dst_blocklist.c:matchnet Unexecuted instantiation: events.c:matchnet Unexecuted instantiation: f_malloc.c:matchnet Unexecuted instantiation: flags.c:matchnet Unexecuted instantiation: fmsg.c:matchnet Unexecuted instantiation: forward.c:matchnet Unexecuted instantiation: hf.c:matchnet Unexecuted instantiation: io_wait.c:matchnet Unexecuted instantiation: ip_addr.c:matchnet Unexecuted instantiation: kemi.c:matchnet Unexecuted instantiation: lex.yy.c:matchnet Unexecuted instantiation: local_timer.c:matchnet Unexecuted instantiation: lvalue.c:matchnet Unexecuted instantiation: mod_fix.c:matchnet Unexecuted instantiation: msg_translator.c:matchnet Unexecuted instantiation: onsend.c:matchnet Unexecuted instantiation: parse_allow.c:matchnet Unexecuted instantiation: parse_body.c:matchnet Unexecuted instantiation: parse_date.c:matchnet Unexecuted instantiation: parse_identity.c:matchnet Unexecuted instantiation: parse_rpid.c:matchnet Unexecuted instantiation: proxy.c:matchnet Unexecuted instantiation: stun.c:matchnet Unexecuted instantiation: fuzz_uri.c:matchnet |
419 | | |
420 | | |
421 | | /* inits an ip_addr pointer from a sockaddr structure*/ |
422 | | static inline void sockaddr2ip_addr( |
423 | | struct ip_addr *ip, const struct sockaddr *sa) |
424 | 0 | { |
425 | 0 | switch(sa->sa_family) { |
426 | 0 | case AF_INET: |
427 | 0 | ip->af = AF_INET; |
428 | 0 | ip->len = 4; |
429 | 0 | memcpy(ip->u.addr, &((struct sockaddr_in *)sa)->sin_addr, 4); |
430 | 0 | break; |
431 | 0 | case AF_INET6: |
432 | 0 | ip->af = AF_INET6; |
433 | 0 | ip->len = 16; |
434 | 0 | memcpy(ip->u.addr, &((struct sockaddr_in6 *)sa)->sin6_addr, 16); |
435 | 0 | break; |
436 | 0 | default: |
437 | 0 | LM_CRIT("unknown address family %d\n", sa->sa_family); |
438 | 0 | } |
439 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:sockaddr2ip_addr Unexecuted instantiation: dprint.c:sockaddr2ip_addr Unexecuted instantiation: error.c:sockaddr2ip_addr Unexecuted instantiation: main.c:sockaddr2ip_addr Unexecuted instantiation: modparam.c:sockaddr2ip_addr Unexecuted instantiation: msg_parser.c:sockaddr2ip_addr Unexecuted instantiation: nonsip_hooks.c:sockaddr2ip_addr Unexecuted instantiation: parse_addr_spec.c:sockaddr2ip_addr Unexecuted instantiation: parse_contact.c:sockaddr2ip_addr Unexecuted instantiation: parse_content.c:sockaddr2ip_addr Unexecuted instantiation: parse_cseq.c:sockaddr2ip_addr Unexecuted instantiation: parse_disposition.c:sockaddr2ip_addr Unexecuted instantiation: parse_diversion.c:sockaddr2ip_addr Unexecuted instantiation: parse_fline.c:sockaddr2ip_addr Unexecuted instantiation: parse_from.c:sockaddr2ip_addr Unexecuted instantiation: parse_identityinfo.c:sockaddr2ip_addr Unexecuted instantiation: parse_methods.c:sockaddr2ip_addr Unexecuted instantiation: parse_ppi_pai.c:sockaddr2ip_addr Unexecuted instantiation: parse_privacy.c:sockaddr2ip_addr Unexecuted instantiation: parse_refer_to.c:sockaddr2ip_addr Unexecuted instantiation: parse_rr.c:sockaddr2ip_addr Unexecuted instantiation: parse_to.c:sockaddr2ip_addr Unexecuted instantiation: parse_via.c:sockaddr2ip_addr Unexecuted instantiation: ppcfg.c:sockaddr2ip_addr Unexecuted instantiation: pt.c:sockaddr2ip_addr Unexecuted instantiation: pv_core.c:sockaddr2ip_addr Unexecuted instantiation: pvapi.c:sockaddr2ip_addr Unexecuted instantiation: q_malloc.c:sockaddr2ip_addr Unexecuted instantiation: raw_sock.c:sockaddr2ip_addr Unexecuted instantiation: re.c:sockaddr2ip_addr Unexecuted instantiation: receive.c:sockaddr2ip_addr Unexecuted instantiation: resolve.c:sockaddr2ip_addr Unexecuted instantiation: route.c:sockaddr2ip_addr Unexecuted instantiation: route_struct.c:sockaddr2ip_addr Unexecuted instantiation: rvalue.c:sockaddr2ip_addr Unexecuted instantiation: script_cb.c:sockaddr2ip_addr Unexecuted instantiation: sctp_core.c:sockaddr2ip_addr Unexecuted instantiation: sdp.c:sockaddr2ip_addr Unexecuted instantiation: sdp_helpr_funcs.c:sockaddr2ip_addr Unexecuted instantiation: select.c:sockaddr2ip_addr Unexecuted instantiation: select_core.c:sockaddr2ip_addr Unexecuted instantiation: shm.c:sockaddr2ip_addr Unexecuted instantiation: shm_init.c:sockaddr2ip_addr Unexecuted instantiation: socket_info.c:sockaddr2ip_addr Unexecuted instantiation: sr_module.c:sockaddr2ip_addr Unexecuted instantiation: srapi.c:sockaddr2ip_addr Unexecuted instantiation: strutils.c:sockaddr2ip_addr Unexecuted instantiation: switch.c:sockaddr2ip_addr Unexecuted instantiation: tcp_main.c:sockaddr2ip_addr Unexecuted instantiation: tcp_options.c:sockaddr2ip_addr Unexecuted instantiation: tcp_read.c:sockaddr2ip_addr Unexecuted instantiation: tcp_stats.c:sockaddr2ip_addr Unexecuted instantiation: timer.c:sockaddr2ip_addr Unexecuted instantiation: timer_proc.c:sockaddr2ip_addr Unexecuted instantiation: tls_hooks.c:sockaddr2ip_addr Unexecuted instantiation: tlsf_malloc.c:sockaddr2ip_addr Unexecuted instantiation: udp_server.c:sockaddr2ip_addr Unexecuted instantiation: usr_avp.c:sockaddr2ip_addr Unexecuted instantiation: ut.c:sockaddr2ip_addr Unexecuted instantiation: action.c:sockaddr2ip_addr Unexecuted instantiation: async_task.c:sockaddr2ip_addr Unexecuted instantiation: cfg.tab.c:sockaddr2ip_addr Unexecuted instantiation: cfg_core.c:sockaddr2ip_addr Unexecuted instantiation: cfg_select.c:sockaddr2ip_addr Unexecuted instantiation: cfg_struct.c:sockaddr2ip_addr Unexecuted instantiation: core_cmd.c:sockaddr2ip_addr Unexecuted instantiation: counters.c:sockaddr2ip_addr Unexecuted instantiation: daemonize.c:sockaddr2ip_addr Unexecuted instantiation: data_lump.c:sockaddr2ip_addr Unexecuted instantiation: data_lump_rpl.c:sockaddr2ip_addr Unexecuted instantiation: digest.c:sockaddr2ip_addr Unexecuted instantiation: dns_cache.c:sockaddr2ip_addr Unexecuted instantiation: dset.c:sockaddr2ip_addr Unexecuted instantiation: dst_blocklist.c:sockaddr2ip_addr Unexecuted instantiation: events.c:sockaddr2ip_addr Unexecuted instantiation: f_malloc.c:sockaddr2ip_addr Unexecuted instantiation: flags.c:sockaddr2ip_addr Unexecuted instantiation: fmsg.c:sockaddr2ip_addr Unexecuted instantiation: forward.c:sockaddr2ip_addr Unexecuted instantiation: hf.c:sockaddr2ip_addr Unexecuted instantiation: io_wait.c:sockaddr2ip_addr Unexecuted instantiation: ip_addr.c:sockaddr2ip_addr Unexecuted instantiation: kemi.c:sockaddr2ip_addr Unexecuted instantiation: lex.yy.c:sockaddr2ip_addr Unexecuted instantiation: local_timer.c:sockaddr2ip_addr Unexecuted instantiation: lvalue.c:sockaddr2ip_addr Unexecuted instantiation: mod_fix.c:sockaddr2ip_addr Unexecuted instantiation: msg_translator.c:sockaddr2ip_addr Unexecuted instantiation: onsend.c:sockaddr2ip_addr Unexecuted instantiation: parse_allow.c:sockaddr2ip_addr Unexecuted instantiation: parse_body.c:sockaddr2ip_addr Unexecuted instantiation: parse_date.c:sockaddr2ip_addr Unexecuted instantiation: parse_identity.c:sockaddr2ip_addr Unexecuted instantiation: parse_rpid.c:sockaddr2ip_addr Unexecuted instantiation: proxy.c:sockaddr2ip_addr Unexecuted instantiation: stun.c:sockaddr2ip_addr Unexecuted instantiation: fuzz_uri.c:sockaddr2ip_addr |
440 | | |
441 | | |
442 | | /* compare 2 ip_addrs (both args are pointers)*/ |
443 | | #define ip_addr_cmp(ip1, ip2) \ |
444 | 0 | (((ip1)->af == (ip2)->af) \ |
445 | 0 | && (memcmp((ip1)->u.addr, (ip2)->u.addr, (ip1)->len) == 0)) |
446 | | |
447 | | |
448 | | /* compare 2 sockaddr_unions */ |
449 | | static inline int su_cmp( |
450 | | const union sockaddr_union *s1, const union sockaddr_union *s2) |
451 | 0 | { |
452 | 0 | if(s1->s.sa_family != s2->s.sa_family) |
453 | 0 | return 0; |
454 | 0 | switch(s1->s.sa_family) { |
455 | 0 | case AF_INET: |
456 | 0 | return (s1->sin.sin_port == s2->sin.sin_port) |
457 | 0 | && (memcmp(&s1->sin.sin_addr, &s2->sin.sin_addr, 4) == 0); |
458 | 0 | case AF_INET6: |
459 | 0 | return (s1->sin6.sin6_port == s2->sin6.sin6_port) |
460 | 0 | && (memcmp(&s1->sin6.sin6_addr, &s2->sin6.sin6_addr, 16) |
461 | 0 | == 0); |
462 | 0 | default: |
463 | 0 | LM_CRIT("unknown address family %d\n", s1->s.sa_family); |
464 | 0 | return 0; |
465 | 0 | } |
466 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:su_cmp Unexecuted instantiation: dprint.c:su_cmp Unexecuted instantiation: error.c:su_cmp Unexecuted instantiation: main.c:su_cmp Unexecuted instantiation: modparam.c:su_cmp Unexecuted instantiation: msg_parser.c:su_cmp Unexecuted instantiation: nonsip_hooks.c:su_cmp Unexecuted instantiation: parse_addr_spec.c:su_cmp Unexecuted instantiation: parse_contact.c:su_cmp Unexecuted instantiation: parse_content.c:su_cmp Unexecuted instantiation: parse_cseq.c:su_cmp Unexecuted instantiation: parse_disposition.c:su_cmp Unexecuted instantiation: parse_diversion.c:su_cmp Unexecuted instantiation: parse_fline.c:su_cmp Unexecuted instantiation: parse_from.c:su_cmp Unexecuted instantiation: parse_identityinfo.c:su_cmp Unexecuted instantiation: parse_methods.c:su_cmp Unexecuted instantiation: parse_ppi_pai.c:su_cmp Unexecuted instantiation: parse_privacy.c:su_cmp Unexecuted instantiation: parse_refer_to.c:su_cmp Unexecuted instantiation: parse_rr.c:su_cmp Unexecuted instantiation: parse_to.c:su_cmp Unexecuted instantiation: parse_via.c:su_cmp Unexecuted instantiation: ppcfg.c:su_cmp Unexecuted instantiation: pt.c:su_cmp Unexecuted instantiation: pv_core.c:su_cmp Unexecuted instantiation: pvapi.c:su_cmp Unexecuted instantiation: q_malloc.c:su_cmp Unexecuted instantiation: raw_sock.c:su_cmp Unexecuted instantiation: re.c:su_cmp Unexecuted instantiation: receive.c:su_cmp Unexecuted instantiation: resolve.c:su_cmp Unexecuted instantiation: route.c:su_cmp Unexecuted instantiation: route_struct.c:su_cmp Unexecuted instantiation: rvalue.c:su_cmp Unexecuted instantiation: script_cb.c:su_cmp Unexecuted instantiation: sctp_core.c:su_cmp Unexecuted instantiation: sdp.c:su_cmp Unexecuted instantiation: sdp_helpr_funcs.c:su_cmp Unexecuted instantiation: select.c:su_cmp Unexecuted instantiation: select_core.c:su_cmp Unexecuted instantiation: shm.c:su_cmp Unexecuted instantiation: shm_init.c:su_cmp Unexecuted instantiation: socket_info.c:su_cmp Unexecuted instantiation: sr_module.c:su_cmp Unexecuted instantiation: srapi.c:su_cmp Unexecuted instantiation: strutils.c:su_cmp Unexecuted instantiation: switch.c:su_cmp Unexecuted instantiation: tcp_main.c:su_cmp Unexecuted instantiation: tcp_options.c:su_cmp Unexecuted instantiation: tcp_read.c:su_cmp Unexecuted instantiation: tcp_stats.c:su_cmp Unexecuted instantiation: timer.c:su_cmp Unexecuted instantiation: timer_proc.c:su_cmp Unexecuted instantiation: tls_hooks.c:su_cmp Unexecuted instantiation: tlsf_malloc.c:su_cmp Unexecuted instantiation: udp_server.c:su_cmp Unexecuted instantiation: usr_avp.c:su_cmp Unexecuted instantiation: ut.c:su_cmp Unexecuted instantiation: action.c:su_cmp Unexecuted instantiation: async_task.c:su_cmp Unexecuted instantiation: cfg.tab.c:su_cmp Unexecuted instantiation: cfg_core.c:su_cmp Unexecuted instantiation: cfg_select.c:su_cmp Unexecuted instantiation: cfg_struct.c:su_cmp Unexecuted instantiation: core_cmd.c:su_cmp Unexecuted instantiation: counters.c:su_cmp Unexecuted instantiation: daemonize.c:su_cmp Unexecuted instantiation: data_lump.c:su_cmp Unexecuted instantiation: data_lump_rpl.c:su_cmp Unexecuted instantiation: digest.c:su_cmp Unexecuted instantiation: dns_cache.c:su_cmp Unexecuted instantiation: dset.c:su_cmp Unexecuted instantiation: dst_blocklist.c:su_cmp Unexecuted instantiation: events.c:su_cmp Unexecuted instantiation: f_malloc.c:su_cmp Unexecuted instantiation: flags.c:su_cmp Unexecuted instantiation: fmsg.c:su_cmp Unexecuted instantiation: forward.c:su_cmp Unexecuted instantiation: hf.c:su_cmp Unexecuted instantiation: io_wait.c:su_cmp Unexecuted instantiation: ip_addr.c:su_cmp Unexecuted instantiation: kemi.c:su_cmp Unexecuted instantiation: lex.yy.c:su_cmp Unexecuted instantiation: local_timer.c:su_cmp Unexecuted instantiation: lvalue.c:su_cmp Unexecuted instantiation: mod_fix.c:su_cmp Unexecuted instantiation: msg_translator.c:su_cmp Unexecuted instantiation: onsend.c:su_cmp Unexecuted instantiation: parse_allow.c:su_cmp Unexecuted instantiation: parse_body.c:su_cmp Unexecuted instantiation: parse_date.c:su_cmp Unexecuted instantiation: parse_identity.c:su_cmp Unexecuted instantiation: parse_rpid.c:su_cmp Unexecuted instantiation: proxy.c:su_cmp Unexecuted instantiation: stun.c:su_cmp Unexecuted instantiation: fuzz_uri.c:su_cmp |
467 | | |
468 | | |
469 | | /* gets the port number (host byte order) */ |
470 | | static inline unsigned short su_getport(const union sockaddr_union *su) |
471 | 0 | { |
472 | 0 | switch(su->s.sa_family) { |
473 | 0 | case AF_INET: |
474 | 0 | return ntohs(su->sin.sin_port); |
475 | 0 | case AF_INET6: |
476 | 0 | return ntohs(su->sin6.sin6_port); |
477 | 0 | default: |
478 | 0 | LM_CRIT("unknown address family %d\n", su->s.sa_family); |
479 | 0 | return 0; |
480 | 0 | } |
481 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:su_getport Unexecuted instantiation: dprint.c:su_getport Unexecuted instantiation: error.c:su_getport Unexecuted instantiation: main.c:su_getport Unexecuted instantiation: modparam.c:su_getport Unexecuted instantiation: msg_parser.c:su_getport Unexecuted instantiation: nonsip_hooks.c:su_getport Unexecuted instantiation: parse_addr_spec.c:su_getport Unexecuted instantiation: parse_contact.c:su_getport Unexecuted instantiation: parse_content.c:su_getport Unexecuted instantiation: parse_cseq.c:su_getport Unexecuted instantiation: parse_disposition.c:su_getport Unexecuted instantiation: parse_diversion.c:su_getport Unexecuted instantiation: parse_fline.c:su_getport Unexecuted instantiation: parse_from.c:su_getport Unexecuted instantiation: parse_identityinfo.c:su_getport Unexecuted instantiation: parse_methods.c:su_getport Unexecuted instantiation: parse_ppi_pai.c:su_getport Unexecuted instantiation: parse_privacy.c:su_getport Unexecuted instantiation: parse_refer_to.c:su_getport Unexecuted instantiation: parse_rr.c:su_getport Unexecuted instantiation: parse_to.c:su_getport Unexecuted instantiation: parse_via.c:su_getport Unexecuted instantiation: ppcfg.c:su_getport Unexecuted instantiation: pt.c:su_getport Unexecuted instantiation: pv_core.c:su_getport Unexecuted instantiation: pvapi.c:su_getport Unexecuted instantiation: q_malloc.c:su_getport Unexecuted instantiation: raw_sock.c:su_getport Unexecuted instantiation: re.c:su_getport Unexecuted instantiation: receive.c:su_getport Unexecuted instantiation: resolve.c:su_getport Unexecuted instantiation: route.c:su_getport Unexecuted instantiation: route_struct.c:su_getport Unexecuted instantiation: rvalue.c:su_getport Unexecuted instantiation: script_cb.c:su_getport Unexecuted instantiation: sctp_core.c:su_getport Unexecuted instantiation: sdp.c:su_getport Unexecuted instantiation: sdp_helpr_funcs.c:su_getport Unexecuted instantiation: select.c:su_getport Unexecuted instantiation: select_core.c:su_getport Unexecuted instantiation: shm.c:su_getport Unexecuted instantiation: shm_init.c:su_getport Unexecuted instantiation: socket_info.c:su_getport Unexecuted instantiation: sr_module.c:su_getport Unexecuted instantiation: srapi.c:su_getport Unexecuted instantiation: strutils.c:su_getport Unexecuted instantiation: switch.c:su_getport Unexecuted instantiation: tcp_main.c:su_getport Unexecuted instantiation: tcp_options.c:su_getport Unexecuted instantiation: tcp_read.c:su_getport Unexecuted instantiation: tcp_stats.c:su_getport Unexecuted instantiation: timer.c:su_getport Unexecuted instantiation: timer_proc.c:su_getport Unexecuted instantiation: tls_hooks.c:su_getport Unexecuted instantiation: tlsf_malloc.c:su_getport Unexecuted instantiation: udp_server.c:su_getport Unexecuted instantiation: usr_avp.c:su_getport Unexecuted instantiation: ut.c:su_getport Unexecuted instantiation: action.c:su_getport Unexecuted instantiation: async_task.c:su_getport Unexecuted instantiation: cfg.tab.c:su_getport Unexecuted instantiation: cfg_core.c:su_getport Unexecuted instantiation: cfg_select.c:su_getport Unexecuted instantiation: cfg_struct.c:su_getport Unexecuted instantiation: core_cmd.c:su_getport Unexecuted instantiation: counters.c:su_getport Unexecuted instantiation: daemonize.c:su_getport Unexecuted instantiation: data_lump.c:su_getport Unexecuted instantiation: data_lump_rpl.c:su_getport Unexecuted instantiation: digest.c:su_getport Unexecuted instantiation: dns_cache.c:su_getport Unexecuted instantiation: dset.c:su_getport Unexecuted instantiation: dst_blocklist.c:su_getport Unexecuted instantiation: events.c:su_getport Unexecuted instantiation: f_malloc.c:su_getport Unexecuted instantiation: flags.c:su_getport Unexecuted instantiation: fmsg.c:su_getport Unexecuted instantiation: forward.c:su_getport Unexecuted instantiation: hf.c:su_getport Unexecuted instantiation: io_wait.c:su_getport Unexecuted instantiation: ip_addr.c:su_getport Unexecuted instantiation: kemi.c:su_getport Unexecuted instantiation: lex.yy.c:su_getport Unexecuted instantiation: local_timer.c:su_getport Unexecuted instantiation: lvalue.c:su_getport Unexecuted instantiation: mod_fix.c:su_getport Unexecuted instantiation: msg_translator.c:su_getport Unexecuted instantiation: onsend.c:su_getport Unexecuted instantiation: parse_allow.c:su_getport Unexecuted instantiation: parse_body.c:su_getport Unexecuted instantiation: parse_date.c:su_getport Unexecuted instantiation: parse_identity.c:su_getport Unexecuted instantiation: parse_rpid.c:su_getport Unexecuted instantiation: proxy.c:su_getport Unexecuted instantiation: stun.c:su_getport Unexecuted instantiation: fuzz_uri.c:su_getport |
482 | | |
483 | | |
484 | | /* sets the port number (host byte order) */ |
485 | | static inline void su_setport(union sockaddr_union *su, unsigned short port) |
486 | 0 | { |
487 | 0 | switch(su->s.sa_family) { |
488 | 0 | case AF_INET: |
489 | 0 | su->sin.sin_port = htons(port); |
490 | 0 | break; |
491 | 0 | case AF_INET6: |
492 | 0 | su->sin6.sin6_port = htons(port); |
493 | 0 | break; |
494 | 0 | default: |
495 | 0 | LM_CRIT("unknown address family %d\n", su->s.sa_family); |
496 | 0 | } |
497 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:su_setport Unexecuted instantiation: dprint.c:su_setport Unexecuted instantiation: error.c:su_setport Unexecuted instantiation: main.c:su_setport Unexecuted instantiation: modparam.c:su_setport Unexecuted instantiation: msg_parser.c:su_setport Unexecuted instantiation: nonsip_hooks.c:su_setport Unexecuted instantiation: parse_addr_spec.c:su_setport Unexecuted instantiation: parse_contact.c:su_setport Unexecuted instantiation: parse_content.c:su_setport Unexecuted instantiation: parse_cseq.c:su_setport Unexecuted instantiation: parse_disposition.c:su_setport Unexecuted instantiation: parse_diversion.c:su_setport Unexecuted instantiation: parse_fline.c:su_setport Unexecuted instantiation: parse_from.c:su_setport Unexecuted instantiation: parse_identityinfo.c:su_setport Unexecuted instantiation: parse_methods.c:su_setport Unexecuted instantiation: parse_ppi_pai.c:su_setport Unexecuted instantiation: parse_privacy.c:su_setport Unexecuted instantiation: parse_refer_to.c:su_setport Unexecuted instantiation: parse_rr.c:su_setport Unexecuted instantiation: parse_to.c:su_setport Unexecuted instantiation: parse_via.c:su_setport Unexecuted instantiation: ppcfg.c:su_setport Unexecuted instantiation: pt.c:su_setport Unexecuted instantiation: pv_core.c:su_setport Unexecuted instantiation: pvapi.c:su_setport Unexecuted instantiation: q_malloc.c:su_setport Unexecuted instantiation: raw_sock.c:su_setport Unexecuted instantiation: re.c:su_setport Unexecuted instantiation: receive.c:su_setport Unexecuted instantiation: resolve.c:su_setport Unexecuted instantiation: route.c:su_setport Unexecuted instantiation: route_struct.c:su_setport Unexecuted instantiation: rvalue.c:su_setport Unexecuted instantiation: script_cb.c:su_setport Unexecuted instantiation: sctp_core.c:su_setport Unexecuted instantiation: sdp.c:su_setport Unexecuted instantiation: sdp_helpr_funcs.c:su_setport Unexecuted instantiation: select.c:su_setport Unexecuted instantiation: select_core.c:su_setport Unexecuted instantiation: shm.c:su_setport Unexecuted instantiation: shm_init.c:su_setport Unexecuted instantiation: socket_info.c:su_setport Unexecuted instantiation: sr_module.c:su_setport Unexecuted instantiation: srapi.c:su_setport Unexecuted instantiation: strutils.c:su_setport Unexecuted instantiation: switch.c:su_setport Unexecuted instantiation: tcp_main.c:su_setport Unexecuted instantiation: tcp_options.c:su_setport Unexecuted instantiation: tcp_read.c:su_setport Unexecuted instantiation: tcp_stats.c:su_setport Unexecuted instantiation: timer.c:su_setport Unexecuted instantiation: timer_proc.c:su_setport Unexecuted instantiation: tls_hooks.c:su_setport Unexecuted instantiation: tlsf_malloc.c:su_setport Unexecuted instantiation: udp_server.c:su_setport Unexecuted instantiation: usr_avp.c:su_setport Unexecuted instantiation: ut.c:su_setport Unexecuted instantiation: action.c:su_setport Unexecuted instantiation: async_task.c:su_setport Unexecuted instantiation: cfg.tab.c:su_setport Unexecuted instantiation: cfg_core.c:su_setport Unexecuted instantiation: cfg_select.c:su_setport Unexecuted instantiation: cfg_struct.c:su_setport Unexecuted instantiation: core_cmd.c:su_setport Unexecuted instantiation: counters.c:su_setport Unexecuted instantiation: daemonize.c:su_setport Unexecuted instantiation: data_lump.c:su_setport Unexecuted instantiation: data_lump_rpl.c:su_setport Unexecuted instantiation: digest.c:su_setport Unexecuted instantiation: dns_cache.c:su_setport Unexecuted instantiation: dset.c:su_setport Unexecuted instantiation: dst_blocklist.c:su_setport Unexecuted instantiation: events.c:su_setport Unexecuted instantiation: f_malloc.c:su_setport Unexecuted instantiation: flags.c:su_setport Unexecuted instantiation: fmsg.c:su_setport Unexecuted instantiation: forward.c:su_setport Unexecuted instantiation: hf.c:su_setport Unexecuted instantiation: io_wait.c:su_setport Unexecuted instantiation: ip_addr.c:su_setport Unexecuted instantiation: kemi.c:su_setport Unexecuted instantiation: lex.yy.c:su_setport Unexecuted instantiation: local_timer.c:su_setport Unexecuted instantiation: lvalue.c:su_setport Unexecuted instantiation: mod_fix.c:su_setport Unexecuted instantiation: msg_translator.c:su_setport Unexecuted instantiation: onsend.c:su_setport Unexecuted instantiation: parse_allow.c:su_setport Unexecuted instantiation: parse_body.c:su_setport Unexecuted instantiation: parse_date.c:su_setport Unexecuted instantiation: parse_identity.c:su_setport Unexecuted instantiation: parse_rpid.c:su_setport Unexecuted instantiation: proxy.c:su_setport Unexecuted instantiation: stun.c:su_setport Unexecuted instantiation: fuzz_uri.c:su_setport |
498 | | |
499 | | |
500 | | /* inits an ip_addr pointer from a sockaddr_union ip address */ |
501 | | static inline void su2ip_addr( |
502 | | struct ip_addr *ip, const union sockaddr_union *su) |
503 | 0 | { |
504 | 0 | switch(su->s.sa_family) { |
505 | 0 | case AF_INET: |
506 | 0 | ip->af = AF_INET; |
507 | 0 | ip->len = 4; |
508 | 0 | memcpy(ip->u.addr, &su->sin.sin_addr, 4); |
509 | 0 | break; |
510 | 0 | case AF_INET6: |
511 | 0 | ip->af = AF_INET6; |
512 | 0 | ip->len = 16; |
513 | 0 | memcpy(ip->u.addr, &su->sin6.sin6_addr, 16); |
514 | 0 | break; |
515 | 0 | default: |
516 | 0 | LM_CRIT("unknown address family %d\n", su->s.sa_family); |
517 | 0 | memset(ip, 0, sizeof(ip_addr_t)); |
518 | 0 | } |
519 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:su2ip_addr Unexecuted instantiation: dprint.c:su2ip_addr Unexecuted instantiation: error.c:su2ip_addr Unexecuted instantiation: main.c:su2ip_addr Unexecuted instantiation: modparam.c:su2ip_addr Unexecuted instantiation: msg_parser.c:su2ip_addr Unexecuted instantiation: nonsip_hooks.c:su2ip_addr Unexecuted instantiation: parse_addr_spec.c:su2ip_addr Unexecuted instantiation: parse_contact.c:su2ip_addr Unexecuted instantiation: parse_content.c:su2ip_addr Unexecuted instantiation: parse_cseq.c:su2ip_addr Unexecuted instantiation: parse_disposition.c:su2ip_addr Unexecuted instantiation: parse_diversion.c:su2ip_addr Unexecuted instantiation: parse_fline.c:su2ip_addr Unexecuted instantiation: parse_from.c:su2ip_addr Unexecuted instantiation: parse_identityinfo.c:su2ip_addr Unexecuted instantiation: parse_methods.c:su2ip_addr Unexecuted instantiation: parse_ppi_pai.c:su2ip_addr Unexecuted instantiation: parse_privacy.c:su2ip_addr Unexecuted instantiation: parse_refer_to.c:su2ip_addr Unexecuted instantiation: parse_rr.c:su2ip_addr Unexecuted instantiation: parse_to.c:su2ip_addr Unexecuted instantiation: parse_via.c:su2ip_addr Unexecuted instantiation: ppcfg.c:su2ip_addr Unexecuted instantiation: pt.c:su2ip_addr Unexecuted instantiation: pv_core.c:su2ip_addr Unexecuted instantiation: pvapi.c:su2ip_addr Unexecuted instantiation: q_malloc.c:su2ip_addr Unexecuted instantiation: raw_sock.c:su2ip_addr Unexecuted instantiation: re.c:su2ip_addr Unexecuted instantiation: receive.c:su2ip_addr Unexecuted instantiation: resolve.c:su2ip_addr Unexecuted instantiation: route.c:su2ip_addr Unexecuted instantiation: route_struct.c:su2ip_addr Unexecuted instantiation: rvalue.c:su2ip_addr Unexecuted instantiation: script_cb.c:su2ip_addr Unexecuted instantiation: sctp_core.c:su2ip_addr Unexecuted instantiation: sdp.c:su2ip_addr Unexecuted instantiation: sdp_helpr_funcs.c:su2ip_addr Unexecuted instantiation: select.c:su2ip_addr Unexecuted instantiation: select_core.c:su2ip_addr Unexecuted instantiation: shm.c:su2ip_addr Unexecuted instantiation: shm_init.c:su2ip_addr Unexecuted instantiation: socket_info.c:su2ip_addr Unexecuted instantiation: sr_module.c:su2ip_addr Unexecuted instantiation: srapi.c:su2ip_addr Unexecuted instantiation: strutils.c:su2ip_addr Unexecuted instantiation: switch.c:su2ip_addr Unexecuted instantiation: tcp_main.c:su2ip_addr Unexecuted instantiation: tcp_options.c:su2ip_addr Unexecuted instantiation: tcp_read.c:su2ip_addr Unexecuted instantiation: tcp_stats.c:su2ip_addr Unexecuted instantiation: timer.c:su2ip_addr Unexecuted instantiation: timer_proc.c:su2ip_addr Unexecuted instantiation: tls_hooks.c:su2ip_addr Unexecuted instantiation: tlsf_malloc.c:su2ip_addr Unexecuted instantiation: udp_server.c:su2ip_addr Unexecuted instantiation: usr_avp.c:su2ip_addr Unexecuted instantiation: ut.c:su2ip_addr Unexecuted instantiation: action.c:su2ip_addr Unexecuted instantiation: async_task.c:su2ip_addr Unexecuted instantiation: cfg.tab.c:su2ip_addr Unexecuted instantiation: cfg_core.c:su2ip_addr Unexecuted instantiation: cfg_select.c:su2ip_addr Unexecuted instantiation: cfg_struct.c:su2ip_addr Unexecuted instantiation: core_cmd.c:su2ip_addr Unexecuted instantiation: counters.c:su2ip_addr Unexecuted instantiation: daemonize.c:su2ip_addr Unexecuted instantiation: data_lump.c:su2ip_addr Unexecuted instantiation: data_lump_rpl.c:su2ip_addr Unexecuted instantiation: digest.c:su2ip_addr Unexecuted instantiation: dns_cache.c:su2ip_addr Unexecuted instantiation: dset.c:su2ip_addr Unexecuted instantiation: dst_blocklist.c:su2ip_addr Unexecuted instantiation: events.c:su2ip_addr Unexecuted instantiation: f_malloc.c:su2ip_addr Unexecuted instantiation: flags.c:su2ip_addr Unexecuted instantiation: fmsg.c:su2ip_addr Unexecuted instantiation: forward.c:su2ip_addr Unexecuted instantiation: hf.c:su2ip_addr Unexecuted instantiation: io_wait.c:su2ip_addr Unexecuted instantiation: ip_addr.c:su2ip_addr Unexecuted instantiation: kemi.c:su2ip_addr Unexecuted instantiation: lex.yy.c:su2ip_addr Unexecuted instantiation: local_timer.c:su2ip_addr Unexecuted instantiation: lvalue.c:su2ip_addr Unexecuted instantiation: mod_fix.c:su2ip_addr Unexecuted instantiation: msg_translator.c:su2ip_addr Unexecuted instantiation: onsend.c:su2ip_addr Unexecuted instantiation: parse_allow.c:su2ip_addr Unexecuted instantiation: parse_body.c:su2ip_addr Unexecuted instantiation: parse_date.c:su2ip_addr Unexecuted instantiation: parse_identity.c:su2ip_addr Unexecuted instantiation: parse_rpid.c:su2ip_addr Unexecuted instantiation: proxy.c:su2ip_addr Unexecuted instantiation: stun.c:su2ip_addr Unexecuted instantiation: fuzz_uri.c:su2ip_addr |
520 | | |
521 | | |
522 | | /* ip_addr2su -> the same as init_su*/ |
523 | 0 | #define ip_addr2su init_su |
524 | | |
525 | | /* inits a struct sockaddr_union from a struct ip_addr and a port no |
526 | | * returns 0 if ok, -1 on error (unknown address family) |
527 | | * the port number is in host byte order */ |
528 | | static inline int init_su( |
529 | | union sockaddr_union *su, struct ip_addr *ip, unsigned short port) |
530 | 0 | { |
531 | 0 | memset(su, 0, sizeof(union sockaddr_union)); /*needed on freebsd*/ |
532 | 0 | su->s.sa_family = ip->af; |
533 | 0 | switch(ip->af) { |
534 | 0 | case AF_INET6: |
535 | 0 | memcpy(&su->sin6.sin6_addr, ip->u.addr, ip->len); |
536 | | #ifdef HAVE_SOCKADDR_SA_LEN |
537 | | su->sin6.sin6_len = sizeof(struct sockaddr_in6); |
538 | | #endif |
539 | 0 | su->sin6.sin6_port = htons(port); |
540 | 0 | break; |
541 | 0 | case AF_INET: |
542 | 0 | memcpy(&su->sin.sin_addr, ip->u.addr, ip->len); |
543 | | #ifdef HAVE_SOCKADDR_SA_LEN |
544 | | su->sin.sin_len = sizeof(struct sockaddr_in); |
545 | | #endif |
546 | 0 | su->sin.sin_port = htons(port); |
547 | 0 | break; |
548 | 0 | default: |
549 | 0 | LM_CRIT("unknown address family %d\n", ip->af); |
550 | 0 | return -1; |
551 | 0 | } |
552 | 0 | return 0; |
553 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:init_su Unexecuted instantiation: dprint.c:init_su Unexecuted instantiation: error.c:init_su Unexecuted instantiation: main.c:init_su Unexecuted instantiation: modparam.c:init_su Unexecuted instantiation: msg_parser.c:init_su Unexecuted instantiation: nonsip_hooks.c:init_su Unexecuted instantiation: parse_addr_spec.c:init_su Unexecuted instantiation: parse_contact.c:init_su Unexecuted instantiation: parse_content.c:init_su Unexecuted instantiation: parse_cseq.c:init_su Unexecuted instantiation: parse_disposition.c:init_su Unexecuted instantiation: parse_diversion.c:init_su Unexecuted instantiation: parse_fline.c:init_su Unexecuted instantiation: parse_from.c:init_su Unexecuted instantiation: parse_identityinfo.c:init_su Unexecuted instantiation: parse_methods.c:init_su Unexecuted instantiation: parse_ppi_pai.c:init_su Unexecuted instantiation: parse_privacy.c:init_su Unexecuted instantiation: parse_refer_to.c:init_su Unexecuted instantiation: parse_rr.c:init_su Unexecuted instantiation: parse_to.c:init_su Unexecuted instantiation: parse_via.c:init_su Unexecuted instantiation: ppcfg.c:init_su Unexecuted instantiation: pt.c:init_su Unexecuted instantiation: pv_core.c:init_su Unexecuted instantiation: pvapi.c:init_su Unexecuted instantiation: q_malloc.c:init_su Unexecuted instantiation: raw_sock.c:init_su Unexecuted instantiation: re.c:init_su Unexecuted instantiation: receive.c:init_su Unexecuted instantiation: resolve.c:init_su Unexecuted instantiation: route.c:init_su Unexecuted instantiation: route_struct.c:init_su Unexecuted instantiation: rvalue.c:init_su Unexecuted instantiation: script_cb.c:init_su Unexecuted instantiation: sctp_core.c:init_su Unexecuted instantiation: sdp.c:init_su Unexecuted instantiation: sdp_helpr_funcs.c:init_su Unexecuted instantiation: select.c:init_su Unexecuted instantiation: select_core.c:init_su Unexecuted instantiation: shm.c:init_su Unexecuted instantiation: shm_init.c:init_su Unexecuted instantiation: socket_info.c:init_su Unexecuted instantiation: sr_module.c:init_su Unexecuted instantiation: srapi.c:init_su Unexecuted instantiation: strutils.c:init_su Unexecuted instantiation: switch.c:init_su Unexecuted instantiation: tcp_main.c:init_su Unexecuted instantiation: tcp_options.c:init_su Unexecuted instantiation: tcp_read.c:init_su Unexecuted instantiation: tcp_stats.c:init_su Unexecuted instantiation: timer.c:init_su Unexecuted instantiation: timer_proc.c:init_su Unexecuted instantiation: tls_hooks.c:init_su Unexecuted instantiation: tlsf_malloc.c:init_su Unexecuted instantiation: udp_server.c:init_su Unexecuted instantiation: usr_avp.c:init_su Unexecuted instantiation: ut.c:init_su Unexecuted instantiation: action.c:init_su Unexecuted instantiation: async_task.c:init_su Unexecuted instantiation: cfg.tab.c:init_su Unexecuted instantiation: cfg_core.c:init_su Unexecuted instantiation: cfg_select.c:init_su Unexecuted instantiation: cfg_struct.c:init_su Unexecuted instantiation: core_cmd.c:init_su Unexecuted instantiation: counters.c:init_su Unexecuted instantiation: daemonize.c:init_su Unexecuted instantiation: data_lump.c:init_su Unexecuted instantiation: data_lump_rpl.c:init_su Unexecuted instantiation: digest.c:init_su Unexecuted instantiation: dns_cache.c:init_su Unexecuted instantiation: dset.c:init_su Unexecuted instantiation: dst_blocklist.c:init_su Unexecuted instantiation: events.c:init_su Unexecuted instantiation: f_malloc.c:init_su Unexecuted instantiation: flags.c:init_su Unexecuted instantiation: fmsg.c:init_su Unexecuted instantiation: forward.c:init_su Unexecuted instantiation: hf.c:init_su Unexecuted instantiation: io_wait.c:init_su Unexecuted instantiation: ip_addr.c:init_su Unexecuted instantiation: kemi.c:init_su Unexecuted instantiation: lex.yy.c:init_su Unexecuted instantiation: local_timer.c:init_su Unexecuted instantiation: lvalue.c:init_su Unexecuted instantiation: mod_fix.c:init_su Unexecuted instantiation: msg_translator.c:init_su Unexecuted instantiation: onsend.c:init_su Unexecuted instantiation: parse_allow.c:init_su Unexecuted instantiation: parse_body.c:init_su Unexecuted instantiation: parse_date.c:init_su Unexecuted instantiation: parse_identity.c:init_su Unexecuted instantiation: parse_rpid.c:init_su Unexecuted instantiation: proxy.c:init_su Unexecuted instantiation: stun.c:init_su Unexecuted instantiation: fuzz_uri.c:init_su |
554 | | |
555 | | |
556 | | /* inits a struct sockaddr_union from a struct hostent, an address index in |
557 | | * the hostent structure and a port no. (host byte order) |
558 | | * WARNING: no index overflow checks! |
559 | | * returns 0 if ok, -1 on error (unknown address family) */ |
560 | | int hostent2su(union sockaddr_union *su, struct hostent *he, unsigned int idx, |
561 | | unsigned short port); |
562 | | |
563 | | |
564 | | /* maximum size of a str returned by ip_addr2str */ |
565 | | /* POSIX INET6_ADDRSTRLEN (RFC 4291 section 2.2) - IPv6 with IPv4 tunneling |
566 | | * (39): 1234:5678:9012:3456:7890:1234:5678:9012 |
567 | | * (45): ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255 */ |
568 | | #ifdef INET6_ADDRSTRLEN |
569 | 0 | #define IP6_MAX_STR_SIZE (INET6_ADDRSTRLEN - 1) |
570 | | #else |
571 | | #define IP6_MAX_STR_SIZE 45 |
572 | | #endif |
573 | | /*123.456.789.123*/ |
574 | | #ifdef INET_ADDRSTRLEN |
575 | 0 | #define IP4_MAX_STR_SIZE (INET_ADDRSTRLEN - 1) |
576 | | #else |
577 | | #define IP4_MAX_STR_SIZE 15 |
578 | | #endif |
579 | | |
580 | | /* converts a raw ipv6 addr (16 bytes) to ascii */ |
581 | | int ip6tosbuf(unsigned char *ip6, char *buff, int len); |
582 | | |
583 | | |
584 | | /* converts a raw ipv4 addr (4 bytes) to ascii */ |
585 | | int ip4tosbuf(unsigned char *ip4, char *buff, int len); |
586 | | |
587 | | |
588 | | /* fast ip_addr -> string converter; |
589 | | * returns number of bytes written in buf on success, <=0 on error |
590 | | * The buffer must have enough space to hold the maximum size ip address |
591 | | * of the corresponding address (see IP[46] above) or else the function |
592 | | * will return error (no detailed might fit checks are made, for example |
593 | | * if len==7 the function will fail even for 1.2.3.4). |
594 | | */ |
595 | | int ip_addr2sbuf(struct ip_addr *ip, char *buff, int len); |
596 | | |
597 | | |
598 | | /* same as ip_addr2sbuf, but with [ ] around IPv6 addresses */ |
599 | | int ip_addr2sbufz(struct ip_addr *ip, char *buff, int len); |
600 | | |
601 | | |
602 | | /* maximum size of a str returned by ip_addr2a (including \0) */ |
603 | 0 | #define IP_ADDR_MAX_STR_SIZE (IP6_MAX_STR_SIZE + 1) /* ip62ascii + \0*/ |
604 | | #define IP_ADDR_MAX_STRZ_SIZE (IP6_MAX_STR_SIZE + 3) /* ip62ascii + [ + ] + \0*/ |
605 | | |
606 | | /* fast ip_addr -> string converter; |
607 | | * it uses an internal buffer |
608 | | */ |
609 | | char *ip_addr2a(struct ip_addr *ip); |
610 | | |
611 | | |
612 | | /* full address in text representation, including [] for ipv6 */ |
613 | | char *ip_addr2strz(struct ip_addr *ip); |
614 | | |
615 | | |
616 | | #define SU2A_MAX_STR_SIZE \ |
617 | | (IP6_MAX_STR_SIZE + 2 /* [] */ + 1 /* : */ + USHORT2SBUF_MAX_LEN \ |
618 | | + 1 /* \0 */) |
619 | | |
620 | | |
621 | | /* returns an asciiz string containing the ip and the port |
622 | | * (<ip_addr>:port or [<ipv6_addr>]:port) |
623 | | */ |
624 | | char *su2a(union sockaddr_union *su, int su_len); |
625 | | |
626 | | #define SUIP2A_MAX_STR_SIZE (IP6_MAX_STR_SIZE + 2 /* [] */ + 1 /* \0 */) |
627 | | |
628 | | /* returns an asciiz string containing the ip |
629 | | * (<ipv4_addr> or [<ipv6_addr>]) |
630 | | */ |
631 | | char *suip2a(union sockaddr_union *su, int su_len); |
632 | | |
633 | | |
634 | | /* converts an ip_addr structure to a hostent, returns pointer to internal |
635 | | * statical structure */ |
636 | | struct hostent *ip_addr2he(str *name, struct ip_addr *ip); |
637 | | |
638 | | |
639 | | /* init a dest_info structure */ |
640 | | #define init_dest_info(dst) \ |
641 | 0 | do { \ |
642 | 0 | memset((dst), 0, sizeof(struct dest_info)); \ |
643 | 0 | } while(0) |
644 | | |
645 | | |
646 | | /* init a dest_info structure from a recv_info structure */ |
647 | | inline static void init_dst_from_rcv( |
648 | | struct dest_info *dst, const struct receive_info *rcv) |
649 | 0 | { |
650 | 0 | dst->send_sock = rcv->bind_address; |
651 | 0 | dst->to = rcv->src_su; |
652 | 0 | dst->id = rcv->proto_reserved1; |
653 | 0 | dst->proto = rcv->proto; |
654 | 0 | dst->send_flags.f = 0; |
655 | 0 | dst->send_flags.blst_imask = 0; |
656 | | #ifdef USE_COMP |
657 | | dst->comp = rcv->comp; |
658 | | #endif |
659 | 0 | } Unexecuted instantiation: fuzz_parse_msg.c:init_dst_from_rcv Unexecuted instantiation: dprint.c:init_dst_from_rcv Unexecuted instantiation: error.c:init_dst_from_rcv Unexecuted instantiation: main.c:init_dst_from_rcv Unexecuted instantiation: modparam.c:init_dst_from_rcv Unexecuted instantiation: msg_parser.c:init_dst_from_rcv Unexecuted instantiation: nonsip_hooks.c:init_dst_from_rcv Unexecuted instantiation: parse_addr_spec.c:init_dst_from_rcv Unexecuted instantiation: parse_contact.c:init_dst_from_rcv Unexecuted instantiation: parse_content.c:init_dst_from_rcv Unexecuted instantiation: parse_cseq.c:init_dst_from_rcv Unexecuted instantiation: parse_disposition.c:init_dst_from_rcv Unexecuted instantiation: parse_diversion.c:init_dst_from_rcv Unexecuted instantiation: parse_fline.c:init_dst_from_rcv Unexecuted instantiation: parse_from.c:init_dst_from_rcv Unexecuted instantiation: parse_identityinfo.c:init_dst_from_rcv Unexecuted instantiation: parse_methods.c:init_dst_from_rcv Unexecuted instantiation: parse_ppi_pai.c:init_dst_from_rcv Unexecuted instantiation: parse_privacy.c:init_dst_from_rcv Unexecuted instantiation: parse_refer_to.c:init_dst_from_rcv Unexecuted instantiation: parse_rr.c:init_dst_from_rcv Unexecuted instantiation: parse_to.c:init_dst_from_rcv Unexecuted instantiation: parse_via.c:init_dst_from_rcv Unexecuted instantiation: ppcfg.c:init_dst_from_rcv Unexecuted instantiation: pt.c:init_dst_from_rcv Unexecuted instantiation: pv_core.c:init_dst_from_rcv Unexecuted instantiation: pvapi.c:init_dst_from_rcv Unexecuted instantiation: q_malloc.c:init_dst_from_rcv Unexecuted instantiation: raw_sock.c:init_dst_from_rcv Unexecuted instantiation: re.c:init_dst_from_rcv Unexecuted instantiation: receive.c:init_dst_from_rcv Unexecuted instantiation: resolve.c:init_dst_from_rcv Unexecuted instantiation: route.c:init_dst_from_rcv Unexecuted instantiation: route_struct.c:init_dst_from_rcv Unexecuted instantiation: rvalue.c:init_dst_from_rcv Unexecuted instantiation: script_cb.c:init_dst_from_rcv Unexecuted instantiation: sctp_core.c:init_dst_from_rcv Unexecuted instantiation: sdp.c:init_dst_from_rcv Unexecuted instantiation: sdp_helpr_funcs.c:init_dst_from_rcv Unexecuted instantiation: select.c:init_dst_from_rcv Unexecuted instantiation: select_core.c:init_dst_from_rcv Unexecuted instantiation: shm.c:init_dst_from_rcv Unexecuted instantiation: shm_init.c:init_dst_from_rcv Unexecuted instantiation: socket_info.c:init_dst_from_rcv Unexecuted instantiation: sr_module.c:init_dst_from_rcv Unexecuted instantiation: srapi.c:init_dst_from_rcv Unexecuted instantiation: strutils.c:init_dst_from_rcv Unexecuted instantiation: switch.c:init_dst_from_rcv Unexecuted instantiation: tcp_main.c:init_dst_from_rcv Unexecuted instantiation: tcp_options.c:init_dst_from_rcv Unexecuted instantiation: tcp_read.c:init_dst_from_rcv Unexecuted instantiation: tcp_stats.c:init_dst_from_rcv Unexecuted instantiation: timer.c:init_dst_from_rcv Unexecuted instantiation: timer_proc.c:init_dst_from_rcv Unexecuted instantiation: tls_hooks.c:init_dst_from_rcv Unexecuted instantiation: tlsf_malloc.c:init_dst_from_rcv Unexecuted instantiation: udp_server.c:init_dst_from_rcv Unexecuted instantiation: usr_avp.c:init_dst_from_rcv Unexecuted instantiation: ut.c:init_dst_from_rcv Unexecuted instantiation: action.c:init_dst_from_rcv Unexecuted instantiation: async_task.c:init_dst_from_rcv Unexecuted instantiation: cfg.tab.c:init_dst_from_rcv Unexecuted instantiation: cfg_core.c:init_dst_from_rcv Unexecuted instantiation: cfg_select.c:init_dst_from_rcv Unexecuted instantiation: cfg_struct.c:init_dst_from_rcv Unexecuted instantiation: core_cmd.c:init_dst_from_rcv Unexecuted instantiation: counters.c:init_dst_from_rcv Unexecuted instantiation: daemonize.c:init_dst_from_rcv Unexecuted instantiation: data_lump.c:init_dst_from_rcv Unexecuted instantiation: data_lump_rpl.c:init_dst_from_rcv Unexecuted instantiation: digest.c:init_dst_from_rcv Unexecuted instantiation: dns_cache.c:init_dst_from_rcv Unexecuted instantiation: dset.c:init_dst_from_rcv Unexecuted instantiation: dst_blocklist.c:init_dst_from_rcv Unexecuted instantiation: events.c:init_dst_from_rcv Unexecuted instantiation: f_malloc.c:init_dst_from_rcv Unexecuted instantiation: flags.c:init_dst_from_rcv Unexecuted instantiation: fmsg.c:init_dst_from_rcv Unexecuted instantiation: forward.c:init_dst_from_rcv Unexecuted instantiation: hf.c:init_dst_from_rcv Unexecuted instantiation: io_wait.c:init_dst_from_rcv Unexecuted instantiation: ip_addr.c:init_dst_from_rcv Unexecuted instantiation: kemi.c:init_dst_from_rcv Unexecuted instantiation: lex.yy.c:init_dst_from_rcv Unexecuted instantiation: local_timer.c:init_dst_from_rcv Unexecuted instantiation: lvalue.c:init_dst_from_rcv Unexecuted instantiation: mod_fix.c:init_dst_from_rcv Unexecuted instantiation: msg_translator.c:init_dst_from_rcv Unexecuted instantiation: onsend.c:init_dst_from_rcv Unexecuted instantiation: parse_allow.c:init_dst_from_rcv Unexecuted instantiation: parse_body.c:init_dst_from_rcv Unexecuted instantiation: parse_date.c:init_dst_from_rcv Unexecuted instantiation: parse_identity.c:init_dst_from_rcv Unexecuted instantiation: parse_rpid.c:init_dst_from_rcv Unexecuted instantiation: proxy.c:init_dst_from_rcv Unexecuted instantiation: stun.c:init_dst_from_rcv Unexecuted instantiation: fuzz_uri.c:init_dst_from_rcv |
660 | | |
661 | | |
662 | | /** |
663 | | * match ip address with net address and bitmask |
664 | | * - return 0 on match, -1 otherwise |
665 | | */ |
666 | | int ip_addr_match_net(ip_addr_t *iaddr, ip_addr_t *naddr, int mask); |
667 | | |
668 | | int si_get_signaling_data(struct socket_info *si, str **addr, str **port); |
669 | | |
670 | | #endif |