Line | Count | Source |
1 | | /* |
2 | | * ip address family related structures |
3 | | * |
4 | | * Copyright (C) 2001-2003 FhG Fokus |
5 | | * |
6 | | * This file is part of opensips, a free SIP server. |
7 | | * |
8 | | * opensips 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 | | * opensips 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 | | * History: |
23 | | * -------- |
24 | | * 2003-02-13 added struct dest_info (andrei) |
25 | | * 2003-04-06 all ports are stored/passed in host byte order now (andrei) |
26 | | */ |
27 | | |
28 | | /*! |
29 | | * \file |
30 | | * \brief ip address family related structures |
31 | | */ |
32 | | |
33 | | |
34 | | #ifndef ip_addr_h |
35 | | #define ip_addr_h |
36 | | |
37 | | #include <string.h> |
38 | | #include <sys/types.h> |
39 | | #include <sys/socket.h> |
40 | | #include <netinet/in.h> |
41 | | #include <arpa/inet.h> |
42 | | #include <netdb.h> |
43 | | #include "str.h" |
44 | | #include "net/proxy_protocol.h" |
45 | | |
46 | | |
47 | | #include "dprint.h" |
48 | | |
49 | 0 | #define MAX_RECV_BUFFER_SIZE 256*1024 |
50 | 0 | #define MAX_SEND_BUFFER_SIZE 512*1024 |
51 | 0 | #define BUFFER_INCREMENT 2048 |
52 | | |
53 | | #define HEX2I(c) \ |
54 | 2.18k | ( (((c)>='0') && ((c)<='9'))? (c)-'0' : \ |
55 | 2.18k | (((c)>='A') && ((c)<='F'))? ((c)-'A')+10 : \ |
56 | 1.52k | (((c)>='a') && ((c)<='f'))? ((c)-'a')+10 : -1 ) |
57 | | |
58 | | |
59 | | enum sip_protos { PROTO_NONE = 0, PROTO_FIRST = 1, PROTO_UDP = 1, \ |
60 | | PROTO_TCP, PROTO_TLS, PROTO_SCTP, PROTO_WS, PROTO_WSS, PROTO_IPSEC, |
61 | | PROTO_SIP_LAST = PROTO_IPSEC, |
62 | | PROTO_BIN, PROTO_BINS, PROTO_HEP_UDP, PROTO_HEP_TCP, PROTO_HEP_TLS, |
63 | | PROTO_SMPP, PROTO_MSRP, |
64 | | PROTO_MSRPS, PROTO_BOND, PROTO_OTHER}; |
65 | 0 | #define PROTO_LAST PROTO_OTHER |
66 | | |
67 | | struct ip_addr{ |
68 | | unsigned int af; /*!< address family: AF_INET6 or AF_INET */ |
69 | | unsigned int len; /*!< address len, 16 or 4 */ |
70 | | |
71 | | /*! \brief 64 bits aligned address */ |
72 | | union { |
73 | | unsigned long addrl[16/sizeof(long)]; /*!< long format*/ |
74 | | unsigned int addr32[4]; |
75 | | unsigned short addr16[8]; |
76 | | unsigned char addr[16]; |
77 | | }u; |
78 | | }; |
79 | | |
80 | | |
81 | | struct net{ |
82 | | struct ip_addr ip; |
83 | | struct ip_addr mask; |
84 | | }; |
85 | | |
86 | | union sockaddr_union{ |
87 | | struct sockaddr s; |
88 | | struct sockaddr_in sin; |
89 | | struct sockaddr_in6 sin6; |
90 | | }; |
91 | | |
92 | | enum proxy_protocol_flags { |
93 | | PP_INIT, PP_ERROR, PP_UNKNOWN, PP_OK |
94 | | }; |
95 | | |
96 | | struct proxy_protocol { |
97 | | enum proxy_protocol_flags flags; |
98 | | struct ip_addr src_ip; |
99 | | struct ip_addr dst_ip; |
100 | | unsigned short src_port; /*!< host byte order */ |
101 | | unsigned short dst_port; /*!< host byte order */ |
102 | | }; |
103 | | |
104 | | |
105 | | enum si_flags { SI_NONE=0, SI_IS_IP=1, SI_IS_LO=2, SI_IS_MCAST=4, |
106 | | SI_IS_ANYCAST=8, SI_FRAG=16, SI_REUSEPORT=32, SI_INTERNAL=64, |
107 | | SI_ACCEPT_SUBDOMAIN_ALIAS=128, SI_PROXY_IN=256, SI_PROXY_OUT=512, |
108 | | SI_PROXY=SI_PROXY_IN|SI_PROXY_OUT }; |
109 | | |
110 | | struct receive_info { |
111 | | struct ip_addr src_ip; |
112 | | struct ip_addr dst_ip; |
113 | | unsigned short src_port; /*!< host byte order */ |
114 | | unsigned short dst_port; /*!< host byte order */ |
115 | | int proto; |
116 | | unsigned int proto_reserved1; /*!< tcp stores the connection id here */ |
117 | | unsigned int proto_reserved2; |
118 | | union sockaddr_union src_su; /*!< useful for replies*/ |
119 | | const struct socket_info* bind_address; /*!< sock_info structure on which the msg was received*/ |
120 | | struct proxy_protocol real_ep; /*!< real endpoint of the mssage (behind a proxy protocol) */ |
121 | | /* no need for dst_su yet */ |
122 | | }; |
123 | | |
124 | | #define get_rcv_src_ip(_rcv) \ |
125 | | (((_rcv)->real_ep.flags == PP_OK)?&(_rcv)->real_ep.src_ip:&(_rcv)->src_ip) |
126 | | #define get_rcv_src_port(_rcv) \ |
127 | | (((_rcv)->real_ep.flags == PP_OK)?(_rcv)->real_ep.src_port:(_rcv)->src_port) |
128 | | #define get_rcv_dst_ip(_rcv) \ |
129 | | (((_rcv)->real_ep.flags == PP_OK)?&(_rcv)->real_ep.dst_ip:&(_rcv)->dst_ip) |
130 | | #define get_rcv_dst_port(_rcv) \ |
131 | | (((_rcv)->real_ep.flags == PP_OK)?(_rcv)->real_ep.dst_port:(_rcv)->dst_port) |
132 | | |
133 | | |
134 | | struct dest_info { |
135 | | int proto; |
136 | | unsigned int proto_reserved1; /*!< tcp stores the connection id here */ |
137 | | union sockaddr_union to; |
138 | | const struct socket_info* send_sock; |
139 | | }; |
140 | | |
141 | | struct socket_bond_elem { |
142 | | char *name; |
143 | | struct socket_bond_elem *next; |
144 | | }; |
145 | | |
146 | | |
147 | | struct socket_id { |
148 | | char* name; |
149 | | char* adv_name; |
150 | | char* tag; |
151 | | struct socket_bond_elem *bond_list; |
152 | | char* auto_scaling_profile; |
153 | | int adv_port; |
154 | | int proto; |
155 | | int port; |
156 | | int workers; |
157 | | int tos; |
158 | | enum si_flags flags; |
159 | | struct socket_id* next; |
160 | | }; |
161 | | |
162 | | /* len of the sockaddr */ |
163 | | #ifdef HAVE_SOCKADDR_SA_LEN |
164 | | #define sockaddru_len(su) ((su).s.sa_len) |
165 | | #else |
166 | | #define sockaddru_len(su) \ |
167 | 0 | (((su).s.sa_family==AF_INET6)?sizeof(struct sockaddr_in6):\ |
168 | 0 | sizeof(struct sockaddr_in)) |
169 | | #endif /* HAVE_SOCKADDR_SA_LEN*/ |
170 | | |
171 | | /*! \brief inits an ip_addr with the addr. info from a hostent structure |
172 | | * ip = struct ip_addr* |
173 | | * he= struct hostent* |
174 | | */ |
175 | | #define hostent2ip_addr(ip, he, addr_no) \ |
176 | 0 | do{ \ |
177 | 0 | (ip)->af=(he)->h_addrtype; \ |
178 | 0 | (ip)->len=(he)->h_length; \ |
179 | 0 | memcpy((ip)->u.addr, (he)->h_addr_list[(addr_no)], (ip)->len); \ |
180 | 0 | }while(0) |
181 | | |
182 | | |
183 | | #define get_su_info(_su, _ip_char, _port_no) \ |
184 | 0 | do { \ |
185 | 0 | struct ip_addr __ip; \ |
186 | 0 | sockaddr2ip_addr( &__ip, (struct sockaddr*)_su ); \ |
187 | 0 | _ip_char = ip_addr2a(&__ip); \ |
188 | 0 | _port_no = su_getport( (union sockaddr_union*)(void *)_su); \ |
189 | 0 | } while(0) |
190 | | |
191 | | |
192 | | |
193 | | /* gets the protocol family corresponding to a specific address family |
194 | | * ( PF_INET - AF_INET, PF_INET6 - AF_INET6, af for others) |
195 | | */ |
196 | 0 | #define AF2PF(af) (((af)==AF_INET)?PF_INET:((af)==AF_INET6)?PF_INET6:(af)) |
197 | | |
198 | | /* check if a socket_info is marked as anycast */ |
199 | 0 | #define is_anycast(_si) (_si->flags & SI_IS_ANYCAST) |
200 | | |
201 | | /* checks if the given protocol is a SIP one (versus HEP, BIN, SMPP, etc) |
202 | | * we rely here on the fact at all the SIP protos are in a sequance */ |
203 | 0 | #define is_sip_proto(_proto) (PROTO_UDP<=(_proto) && (_proto)<=PROTO_SIP_LAST) |
204 | | |
205 | | struct net* mk_net(const struct ip_addr* ip, struct ip_addr* mask); |
206 | | struct net* mk_net_bitlen(const struct ip_addr* ip, unsigned int bitlen); |
207 | | /* parse a (struct net) out of a CIDR v4 or v6 address such as 1.2.3.4/28 */ |
208 | | int mk_net_cidr(const str *cidr, struct net *out_net); |
209 | | |
210 | | void print_ip(char* prefix, const struct ip_addr* ip, char* suffix); |
211 | | void stdout_print_ip(struct ip_addr* ip); |
212 | | void print_net(struct net* net); |
213 | | |
214 | | int ip_addr_is_1918(str *s_ip, int check_rfc_6333); |
215 | | |
216 | | #ifdef USE_MCAST |
217 | | /*! \brief Returns 1 if the given address is a multicast address */ |
218 | | int is_mcast(struct ip_addr* ip); |
219 | | #endif /* USE_MCAST */ |
220 | | |
221 | | /*! \brief returns 1 if ip & net.mask == net.ip ; 0 otherwise & -1 on error |
222 | | [ diff. address families ]) */ |
223 | | inline static int matchnet(struct ip_addr* ip, struct net* net) |
224 | 0 | { |
225 | 0 | unsigned int r; |
226 | | /* int ret; |
227 | | |
228 | | ret=-1; */ |
229 | 0 | if (ip->af == net->ip.af){ |
230 | 0 | for(r=0; r<ip->len/4; r++){ /* ipv4 & ipv6 addresses are |
231 | | all multiple of 4*/ |
232 | 0 | if ((ip->u.addr32[r]&net->mask.u.addr32[r])!= |
233 | 0 | net->ip.u.addr32[r]){ |
234 | 0 | return 0; |
235 | 0 | } |
236 | 0 | } |
237 | 0 | return 1; |
238 | 0 | }; |
239 | 0 | return -1; |
240 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:matchnet Unexecuted instantiation: csv.c:matchnet Unexecuted instantiation: dprint.c:matchnet Unexecuted instantiation: pt.c:matchnet Unexecuted instantiation: ut.c:matchnet Unexecuted instantiation: statistics.c:matchnet Unexecuted instantiation: route.c:matchnet Unexecuted instantiation: globals.c:matchnet Unexecuted instantiation: ipc.c:matchnet Unexecuted instantiation: core_stats.c:matchnet Unexecuted instantiation: route_struct.c:matchnet Unexecuted instantiation: dset.c:matchnet Unexecuted instantiation: pt_load.c:matchnet Unexecuted instantiation: sr_module.c:matchnet Unexecuted instantiation: action.c:matchnet Unexecuted instantiation: db_insertq.c:matchnet Unexecuted instantiation: db.c:matchnet Unexecuted instantiation: proto_tcp.c:matchnet Unexecuted instantiation: proto_udp.c:matchnet Unexecuted instantiation: net_tcp_proc.c:matchnet Unexecuted instantiation: proxy_protocol.c:matchnet Unexecuted instantiation: net_tcp.c:matchnet Unexecuted instantiation: tcp_common.c:matchnet Unexecuted instantiation: net_udp.c:matchnet Unexecuted instantiation: tcp_conn_profile.c:matchnet Unexecuted instantiation: trans_trace.c:matchnet Unexecuted instantiation: net_tcp_report.c:matchnet Unexecuted instantiation: shm_mem.c:matchnet Unexecuted instantiation: mi.c:matchnet Unexecuted instantiation: item.c:matchnet Unexecuted instantiation: msg_parser.c:matchnet Unexecuted instantiation: parse_uri.c:matchnet Unexecuted instantiation: parse_fline.c:matchnet Unexecuted instantiation: parse_methods.c:matchnet Unexecuted instantiation: parse_hname2.c:matchnet Unexecuted instantiation: parse_content.c:matchnet Unexecuted instantiation: hf.c:matchnet Unexecuted instantiation: parse_to.c:matchnet Unexecuted instantiation: parse_via.c:matchnet Unexecuted instantiation: event_interface.c:matchnet Unexecuted instantiation: receive.c:matchnet Unexecuted instantiation: error.c:matchnet Unexecuted instantiation: script_cb.c:matchnet Unexecuted instantiation: ip_addr.c:matchnet Unexecuted instantiation: data_lump_rpl.c:matchnet Unexecuted instantiation: async.c:matchnet Unexecuted instantiation: daemonize.c:matchnet Unexecuted instantiation: timer.c:matchnet Unexecuted instantiation: trace_api.c:matchnet Unexecuted instantiation: mod_fix.c:matchnet Unexecuted instantiation: reactor.c:matchnet Unexecuted instantiation: strcommon.c:matchnet Unexecuted instantiation: forward.c:matchnet Unexecuted instantiation: xlog.c:matchnet Unexecuted instantiation: blacklists.c:matchnet Unexecuted instantiation: msg_callbacks.c:matchnet Unexecuted instantiation: usr_avp.c:matchnet Unexecuted instantiation: sl_cb.c:matchnet Unexecuted instantiation: sdp_ops.c:matchnet Unexecuted instantiation: resolve.c:matchnet Unexecuted instantiation: io_wait.c:matchnet Unexecuted instantiation: transformations.c:matchnet Unexecuted instantiation: pvar.c:matchnet Unexecuted instantiation: sr_module_deps.c:matchnet Unexecuted instantiation: cfg_reload.c:matchnet Unexecuted instantiation: socket_info.c:matchnet Unexecuted instantiation: time_rec.c:matchnet Unexecuted instantiation: data_lump.c:matchnet Unexecuted instantiation: status_report.c:matchnet Unexecuted instantiation: pt_scaling.c:matchnet Unexecuted instantiation: name_alias.c:matchnet Unexecuted instantiation: signals.c:matchnet Unexecuted instantiation: flags.c:matchnet Unexecuted instantiation: db_id.c:matchnet Unexecuted instantiation: trans.c:matchnet Unexecuted instantiation: sdp.c:matchnet Unexecuted instantiation: sdp_helpr_funcs.c:matchnet Unexecuted instantiation: digest_parser.c:matchnet Unexecuted instantiation: param_parser.c:matchnet Unexecuted instantiation: digest.c:matchnet Unexecuted instantiation: parse_contact.c:matchnet Unexecuted instantiation: parse_body.c:matchnet Unexecuted instantiation: parse_security.c:matchnet Unexecuted instantiation: parse_call_info.c:matchnet Unexecuted instantiation: parse_event.c:matchnet Unexecuted instantiation: parse_disposition.c:matchnet Unexecuted instantiation: parse_authenticate.c:matchnet Unexecuted instantiation: parser_f.c:matchnet Unexecuted instantiation: parse_rpid.c:matchnet Unexecuted instantiation: parse_ppi.c:matchnet Unexecuted instantiation: parse_fcaps.c:matchnet Unexecuted instantiation: parse_sst.c:matchnet Unexecuted instantiation: parse_rr.c:matchnet Unexecuted instantiation: parse_param.c:matchnet Unexecuted instantiation: parse_diversion.c:matchnet Unexecuted instantiation: parse_nameaddr.c:matchnet Unexecuted instantiation: parse_expires.c:matchnet Unexecuted instantiation: parse_refer_to.c:matchnet Unexecuted instantiation: parse_from.c:matchnet Unexecuted instantiation: parse_pai.c:matchnet Unexecuted instantiation: evi_transport.c:matchnet Unexecuted instantiation: msg_translator.c:matchnet Unexecuted instantiation: md5utils.c:matchnet Unexecuted instantiation: cfg.tab.c:matchnet Unexecuted instantiation: modparam.c:matchnet Unexecuted instantiation: crc.c:matchnet Unexecuted instantiation: re.c:matchnet Unexecuted instantiation: lex.yy.c:matchnet Unexecuted instantiation: cfg_pp.c:matchnet Unexecuted instantiation: proxy.c:matchnet Unexecuted instantiation: shutdown.c:matchnet Unexecuted instantiation: cmds.c:matchnet Unexecuted instantiation: core_cmds.c:matchnet Unexecuted instantiation: serialize.c:matchnet Unexecuted instantiation: cachedb.c:matchnet Unexecuted instantiation: cachedb_id.c:matchnet Unexecuted instantiation: fuzz_uri_parser.c:matchnet Unexecuted instantiation: fuzz_core_funcs.c:matchnet Unexecuted instantiation: fuzz_msg_parser.c:matchnet |
241 | | |
242 | | |
243 | | |
244 | | |
245 | | /*! \brief inits an ip_addr pointer from a sockaddr structure*/ |
246 | | static inline void sockaddr2ip_addr(struct ip_addr* ip, const struct sockaddr* sa) |
247 | 0 | { |
248 | 0 | void *copyfrom; |
249 | |
|
250 | 0 | switch(sa->sa_family){ |
251 | 0 | case AF_INET: |
252 | 0 | ip->af=AF_INET; |
253 | 0 | ip->len=4; |
254 | 0 | copyfrom = &((struct sockaddr_in*)(void *)sa)->sin_addr; |
255 | 0 | break; |
256 | 0 | case AF_INET6: |
257 | 0 | ip->af=AF_INET6; |
258 | 0 | ip->len=16; |
259 | 0 | copyfrom = &((struct sockaddr_in6*)(void *)sa)->sin6_addr; |
260 | 0 | break; |
261 | 0 | default: |
262 | 0 | LM_CRIT("unknown address family %d\n", sa->sa_family); |
263 | | /* clear the structure to prevent uninitialized warnings */ |
264 | 0 | ip->af=sa->sa_family; |
265 | 0 | return; |
266 | 0 | } |
267 | 0 | memcpy(ip->u.addr, copyfrom, ip->len); |
268 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:sockaddr2ip_addr Unexecuted instantiation: csv.c:sockaddr2ip_addr Unexecuted instantiation: dprint.c:sockaddr2ip_addr Unexecuted instantiation: pt.c:sockaddr2ip_addr Unexecuted instantiation: ut.c:sockaddr2ip_addr Unexecuted instantiation: statistics.c:sockaddr2ip_addr Unexecuted instantiation: route.c:sockaddr2ip_addr Unexecuted instantiation: globals.c:sockaddr2ip_addr Unexecuted instantiation: ipc.c:sockaddr2ip_addr Unexecuted instantiation: core_stats.c:sockaddr2ip_addr Unexecuted instantiation: route_struct.c:sockaddr2ip_addr Unexecuted instantiation: dset.c:sockaddr2ip_addr Unexecuted instantiation: pt_load.c:sockaddr2ip_addr Unexecuted instantiation: sr_module.c:sockaddr2ip_addr Unexecuted instantiation: action.c:sockaddr2ip_addr Unexecuted instantiation: db_insertq.c:sockaddr2ip_addr Unexecuted instantiation: db.c:sockaddr2ip_addr Unexecuted instantiation: proto_tcp.c:sockaddr2ip_addr Unexecuted instantiation: proto_udp.c:sockaddr2ip_addr Unexecuted instantiation: net_tcp_proc.c:sockaddr2ip_addr Unexecuted instantiation: proxy_protocol.c:sockaddr2ip_addr Unexecuted instantiation: net_tcp.c:sockaddr2ip_addr Unexecuted instantiation: tcp_common.c:sockaddr2ip_addr Unexecuted instantiation: net_udp.c:sockaddr2ip_addr Unexecuted instantiation: tcp_conn_profile.c:sockaddr2ip_addr Unexecuted instantiation: trans_trace.c:sockaddr2ip_addr Unexecuted instantiation: net_tcp_report.c:sockaddr2ip_addr Unexecuted instantiation: shm_mem.c:sockaddr2ip_addr Unexecuted instantiation: mi.c:sockaddr2ip_addr Unexecuted instantiation: item.c:sockaddr2ip_addr Unexecuted instantiation: msg_parser.c:sockaddr2ip_addr Unexecuted instantiation: parse_uri.c:sockaddr2ip_addr Unexecuted instantiation: parse_fline.c:sockaddr2ip_addr Unexecuted instantiation: parse_methods.c:sockaddr2ip_addr Unexecuted instantiation: parse_hname2.c:sockaddr2ip_addr Unexecuted instantiation: parse_content.c:sockaddr2ip_addr Unexecuted instantiation: hf.c:sockaddr2ip_addr Unexecuted instantiation: parse_to.c:sockaddr2ip_addr Unexecuted instantiation: parse_via.c:sockaddr2ip_addr Unexecuted instantiation: event_interface.c:sockaddr2ip_addr Unexecuted instantiation: receive.c:sockaddr2ip_addr Unexecuted instantiation: error.c:sockaddr2ip_addr Unexecuted instantiation: script_cb.c:sockaddr2ip_addr Unexecuted instantiation: ip_addr.c:sockaddr2ip_addr Unexecuted instantiation: data_lump_rpl.c:sockaddr2ip_addr Unexecuted instantiation: async.c:sockaddr2ip_addr Unexecuted instantiation: daemonize.c:sockaddr2ip_addr Unexecuted instantiation: timer.c:sockaddr2ip_addr Unexecuted instantiation: trace_api.c:sockaddr2ip_addr Unexecuted instantiation: mod_fix.c:sockaddr2ip_addr Unexecuted instantiation: reactor.c:sockaddr2ip_addr Unexecuted instantiation: strcommon.c:sockaddr2ip_addr Unexecuted instantiation: forward.c:sockaddr2ip_addr Unexecuted instantiation: xlog.c:sockaddr2ip_addr Unexecuted instantiation: blacklists.c:sockaddr2ip_addr Unexecuted instantiation: msg_callbacks.c:sockaddr2ip_addr Unexecuted instantiation: usr_avp.c:sockaddr2ip_addr Unexecuted instantiation: sl_cb.c:sockaddr2ip_addr Unexecuted instantiation: sdp_ops.c:sockaddr2ip_addr Unexecuted instantiation: resolve.c:sockaddr2ip_addr Unexecuted instantiation: io_wait.c:sockaddr2ip_addr Unexecuted instantiation: transformations.c:sockaddr2ip_addr Unexecuted instantiation: pvar.c:sockaddr2ip_addr Unexecuted instantiation: sr_module_deps.c:sockaddr2ip_addr Unexecuted instantiation: cfg_reload.c:sockaddr2ip_addr Unexecuted instantiation: socket_info.c:sockaddr2ip_addr Unexecuted instantiation: time_rec.c:sockaddr2ip_addr Unexecuted instantiation: data_lump.c:sockaddr2ip_addr Unexecuted instantiation: status_report.c:sockaddr2ip_addr Unexecuted instantiation: pt_scaling.c:sockaddr2ip_addr Unexecuted instantiation: name_alias.c:sockaddr2ip_addr Unexecuted instantiation: signals.c:sockaddr2ip_addr Unexecuted instantiation: flags.c:sockaddr2ip_addr Unexecuted instantiation: db_id.c:sockaddr2ip_addr Unexecuted instantiation: trans.c:sockaddr2ip_addr Unexecuted instantiation: sdp.c:sockaddr2ip_addr Unexecuted instantiation: sdp_helpr_funcs.c:sockaddr2ip_addr Unexecuted instantiation: digest_parser.c:sockaddr2ip_addr Unexecuted instantiation: param_parser.c:sockaddr2ip_addr Unexecuted instantiation: digest.c:sockaddr2ip_addr Unexecuted instantiation: parse_contact.c:sockaddr2ip_addr Unexecuted instantiation: parse_body.c:sockaddr2ip_addr Unexecuted instantiation: parse_security.c:sockaddr2ip_addr Unexecuted instantiation: parse_call_info.c:sockaddr2ip_addr Unexecuted instantiation: parse_event.c:sockaddr2ip_addr Unexecuted instantiation: parse_disposition.c:sockaddr2ip_addr Unexecuted instantiation: parse_authenticate.c:sockaddr2ip_addr Unexecuted instantiation: parser_f.c:sockaddr2ip_addr Unexecuted instantiation: parse_rpid.c:sockaddr2ip_addr Unexecuted instantiation: parse_ppi.c:sockaddr2ip_addr Unexecuted instantiation: parse_fcaps.c:sockaddr2ip_addr Unexecuted instantiation: parse_sst.c:sockaddr2ip_addr Unexecuted instantiation: parse_rr.c:sockaddr2ip_addr Unexecuted instantiation: parse_param.c:sockaddr2ip_addr Unexecuted instantiation: parse_diversion.c:sockaddr2ip_addr Unexecuted instantiation: parse_nameaddr.c:sockaddr2ip_addr Unexecuted instantiation: parse_expires.c:sockaddr2ip_addr Unexecuted instantiation: parse_refer_to.c:sockaddr2ip_addr Unexecuted instantiation: parse_from.c:sockaddr2ip_addr Unexecuted instantiation: parse_pai.c:sockaddr2ip_addr Unexecuted instantiation: evi_transport.c:sockaddr2ip_addr Unexecuted instantiation: msg_translator.c:sockaddr2ip_addr Unexecuted instantiation: md5utils.c:sockaddr2ip_addr Unexecuted instantiation: cfg.tab.c:sockaddr2ip_addr Unexecuted instantiation: modparam.c:sockaddr2ip_addr Unexecuted instantiation: crc.c:sockaddr2ip_addr Unexecuted instantiation: re.c:sockaddr2ip_addr Unexecuted instantiation: lex.yy.c:sockaddr2ip_addr Unexecuted instantiation: cfg_pp.c:sockaddr2ip_addr Unexecuted instantiation: proxy.c:sockaddr2ip_addr Unexecuted instantiation: shutdown.c:sockaddr2ip_addr Unexecuted instantiation: cmds.c:sockaddr2ip_addr Unexecuted instantiation: core_cmds.c:sockaddr2ip_addr Unexecuted instantiation: serialize.c:sockaddr2ip_addr Unexecuted instantiation: cachedb.c:sockaddr2ip_addr Unexecuted instantiation: cachedb_id.c:sockaddr2ip_addr Unexecuted instantiation: fuzz_uri_parser.c:sockaddr2ip_addr Unexecuted instantiation: fuzz_core_funcs.c:sockaddr2ip_addr Unexecuted instantiation: fuzz_msg_parser.c:sockaddr2ip_addr |
269 | | |
270 | | |
271 | | |
272 | | /*! \brief compare 2 ip_addrs (both args are pointers)*/ |
273 | | #define ip_addr_cmp(ip1, ip2) \ |
274 | 10 | (((ip1)->af==(ip2)->af)&& \ |
275 | 10 | (memcmp((ip1)->u.addr, (ip2)->u.addr, (ip1)->len)==0)) |
276 | | |
277 | | |
278 | | |
279 | | /*! \brief compare 2 sockaddr_unions */ |
280 | | static inline int su_cmp(union sockaddr_union* s1, union sockaddr_union* s2) |
281 | 0 | { |
282 | 0 | if (s1->s.sa_family!=s2->s.sa_family) return 0; |
283 | 0 | switch(s1->s.sa_family){ |
284 | 0 | case AF_INET: |
285 | 0 | return (s1->sin.sin_port==s2->sin.sin_port)&& |
286 | 0 | (memcmp(&s1->sin.sin_addr, &s2->sin.sin_addr, 4)==0); |
287 | 0 | case AF_INET6: |
288 | 0 | return (s1->sin6.sin6_port==s2->sin6.sin6_port)&& |
289 | 0 | (memcmp(&s1->sin6.sin6_addr, &s2->sin6.sin6_addr, 16)==0); |
290 | 0 | default: |
291 | 0 | LM_CRIT("unknown address family %d\n", |
292 | 0 | s1->s.sa_family); |
293 | 0 | return 0; |
294 | 0 | } |
295 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:su_cmp Unexecuted instantiation: csv.c:su_cmp Unexecuted instantiation: dprint.c:su_cmp Unexecuted instantiation: pt.c:su_cmp Unexecuted instantiation: ut.c:su_cmp Unexecuted instantiation: statistics.c:su_cmp Unexecuted instantiation: route.c:su_cmp Unexecuted instantiation: globals.c:su_cmp Unexecuted instantiation: ipc.c:su_cmp Unexecuted instantiation: core_stats.c:su_cmp Unexecuted instantiation: route_struct.c:su_cmp Unexecuted instantiation: dset.c:su_cmp Unexecuted instantiation: pt_load.c:su_cmp Unexecuted instantiation: sr_module.c:su_cmp Unexecuted instantiation: action.c:su_cmp Unexecuted instantiation: db_insertq.c:su_cmp Unexecuted instantiation: db.c:su_cmp Unexecuted instantiation: proto_tcp.c:su_cmp Unexecuted instantiation: proto_udp.c:su_cmp Unexecuted instantiation: net_tcp_proc.c:su_cmp Unexecuted instantiation: proxy_protocol.c:su_cmp Unexecuted instantiation: net_tcp.c:su_cmp Unexecuted instantiation: tcp_common.c:su_cmp Unexecuted instantiation: net_udp.c:su_cmp Unexecuted instantiation: tcp_conn_profile.c:su_cmp Unexecuted instantiation: trans_trace.c:su_cmp Unexecuted instantiation: net_tcp_report.c:su_cmp Unexecuted instantiation: shm_mem.c:su_cmp Unexecuted instantiation: mi.c:su_cmp Unexecuted instantiation: item.c:su_cmp Unexecuted instantiation: msg_parser.c:su_cmp Unexecuted instantiation: parse_uri.c:su_cmp Unexecuted instantiation: parse_fline.c:su_cmp Unexecuted instantiation: parse_methods.c:su_cmp Unexecuted instantiation: parse_hname2.c:su_cmp Unexecuted instantiation: parse_content.c:su_cmp Unexecuted instantiation: hf.c:su_cmp Unexecuted instantiation: parse_to.c:su_cmp Unexecuted instantiation: parse_via.c:su_cmp Unexecuted instantiation: event_interface.c:su_cmp Unexecuted instantiation: receive.c:su_cmp Unexecuted instantiation: error.c:su_cmp Unexecuted instantiation: script_cb.c:su_cmp Unexecuted instantiation: ip_addr.c:su_cmp Unexecuted instantiation: data_lump_rpl.c:su_cmp Unexecuted instantiation: async.c:su_cmp Unexecuted instantiation: daemonize.c:su_cmp Unexecuted instantiation: timer.c:su_cmp Unexecuted instantiation: trace_api.c:su_cmp Unexecuted instantiation: mod_fix.c:su_cmp Unexecuted instantiation: reactor.c:su_cmp Unexecuted instantiation: strcommon.c:su_cmp Unexecuted instantiation: forward.c:su_cmp Unexecuted instantiation: xlog.c:su_cmp Unexecuted instantiation: blacklists.c:su_cmp Unexecuted instantiation: msg_callbacks.c:su_cmp Unexecuted instantiation: usr_avp.c:su_cmp Unexecuted instantiation: sl_cb.c:su_cmp Unexecuted instantiation: sdp_ops.c:su_cmp Unexecuted instantiation: resolve.c:su_cmp Unexecuted instantiation: io_wait.c:su_cmp Unexecuted instantiation: transformations.c:su_cmp Unexecuted instantiation: pvar.c:su_cmp Unexecuted instantiation: sr_module_deps.c:su_cmp Unexecuted instantiation: cfg_reload.c:su_cmp Unexecuted instantiation: socket_info.c:su_cmp Unexecuted instantiation: time_rec.c:su_cmp Unexecuted instantiation: data_lump.c:su_cmp Unexecuted instantiation: status_report.c:su_cmp Unexecuted instantiation: pt_scaling.c:su_cmp Unexecuted instantiation: name_alias.c:su_cmp Unexecuted instantiation: signals.c:su_cmp Unexecuted instantiation: flags.c:su_cmp Unexecuted instantiation: db_id.c:su_cmp Unexecuted instantiation: trans.c:su_cmp Unexecuted instantiation: sdp.c:su_cmp Unexecuted instantiation: sdp_helpr_funcs.c:su_cmp Unexecuted instantiation: digest_parser.c:su_cmp Unexecuted instantiation: param_parser.c:su_cmp Unexecuted instantiation: digest.c:su_cmp Unexecuted instantiation: parse_contact.c:su_cmp Unexecuted instantiation: parse_body.c:su_cmp Unexecuted instantiation: parse_security.c:su_cmp Unexecuted instantiation: parse_call_info.c:su_cmp Unexecuted instantiation: parse_event.c:su_cmp Unexecuted instantiation: parse_disposition.c:su_cmp Unexecuted instantiation: parse_authenticate.c:su_cmp Unexecuted instantiation: parser_f.c:su_cmp Unexecuted instantiation: parse_rpid.c:su_cmp Unexecuted instantiation: parse_ppi.c:su_cmp Unexecuted instantiation: parse_fcaps.c:su_cmp Unexecuted instantiation: parse_sst.c:su_cmp Unexecuted instantiation: parse_rr.c:su_cmp Unexecuted instantiation: parse_param.c:su_cmp Unexecuted instantiation: parse_diversion.c:su_cmp Unexecuted instantiation: parse_nameaddr.c:su_cmp Unexecuted instantiation: parse_expires.c:su_cmp Unexecuted instantiation: parse_refer_to.c:su_cmp Unexecuted instantiation: parse_from.c:su_cmp Unexecuted instantiation: parse_pai.c:su_cmp Unexecuted instantiation: evi_transport.c:su_cmp Unexecuted instantiation: msg_translator.c:su_cmp Unexecuted instantiation: md5utils.c:su_cmp Unexecuted instantiation: cfg.tab.c:su_cmp Unexecuted instantiation: modparam.c:su_cmp Unexecuted instantiation: crc.c:su_cmp Unexecuted instantiation: re.c:su_cmp Unexecuted instantiation: lex.yy.c:su_cmp Unexecuted instantiation: cfg_pp.c:su_cmp Unexecuted instantiation: proxy.c:su_cmp Unexecuted instantiation: shutdown.c:su_cmp Unexecuted instantiation: cmds.c:su_cmp Unexecuted instantiation: core_cmds.c:su_cmp Unexecuted instantiation: serialize.c:su_cmp Unexecuted instantiation: cachedb.c:su_cmp Unexecuted instantiation: cachedb_id.c:su_cmp Unexecuted instantiation: fuzz_uri_parser.c:su_cmp Unexecuted instantiation: fuzz_core_funcs.c:su_cmp Unexecuted instantiation: fuzz_msg_parser.c:su_cmp |
296 | | |
297 | | |
298 | | |
299 | | /*! \brief gets the port number (host byte order) */ |
300 | | static inline unsigned short su_getport(const union sockaddr_union* su) |
301 | 0 | { |
302 | 0 | if(su==0) |
303 | 0 | return 0; |
304 | | |
305 | 0 | switch(su->s.sa_family){ |
306 | 0 | case AF_INET: |
307 | 0 | return ntohs(su->sin.sin_port); |
308 | 0 | case AF_INET6: |
309 | 0 | return ntohs(su->sin6.sin6_port); |
310 | 0 | default: |
311 | 0 | LM_CRIT("unknown address family %d\n", su->s.sa_family); |
312 | 0 | return 0; |
313 | 0 | } |
314 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:su_getport Unexecuted instantiation: csv.c:su_getport Unexecuted instantiation: dprint.c:su_getport Unexecuted instantiation: pt.c:su_getport Unexecuted instantiation: ut.c:su_getport Unexecuted instantiation: statistics.c:su_getport Unexecuted instantiation: route.c:su_getport Unexecuted instantiation: globals.c:su_getport Unexecuted instantiation: ipc.c:su_getport Unexecuted instantiation: core_stats.c:su_getport Unexecuted instantiation: route_struct.c:su_getport Unexecuted instantiation: dset.c:su_getport Unexecuted instantiation: pt_load.c:su_getport Unexecuted instantiation: sr_module.c:su_getport Unexecuted instantiation: action.c:su_getport Unexecuted instantiation: db_insertq.c:su_getport Unexecuted instantiation: db.c:su_getport Unexecuted instantiation: proto_tcp.c:su_getport Unexecuted instantiation: proto_udp.c:su_getport Unexecuted instantiation: net_tcp_proc.c:su_getport Unexecuted instantiation: proxy_protocol.c:su_getport Unexecuted instantiation: net_tcp.c:su_getport Unexecuted instantiation: tcp_common.c:su_getport Unexecuted instantiation: net_udp.c:su_getport Unexecuted instantiation: tcp_conn_profile.c:su_getport Unexecuted instantiation: trans_trace.c:su_getport Unexecuted instantiation: net_tcp_report.c:su_getport Unexecuted instantiation: shm_mem.c:su_getport Unexecuted instantiation: mi.c:su_getport Unexecuted instantiation: item.c:su_getport Unexecuted instantiation: msg_parser.c:su_getport Unexecuted instantiation: parse_uri.c:su_getport Unexecuted instantiation: parse_fline.c:su_getport Unexecuted instantiation: parse_methods.c:su_getport Unexecuted instantiation: parse_hname2.c:su_getport Unexecuted instantiation: parse_content.c:su_getport Unexecuted instantiation: hf.c:su_getport Unexecuted instantiation: parse_to.c:su_getport Unexecuted instantiation: parse_via.c:su_getport Unexecuted instantiation: event_interface.c:su_getport Unexecuted instantiation: receive.c:su_getport Unexecuted instantiation: error.c:su_getport Unexecuted instantiation: script_cb.c:su_getport Unexecuted instantiation: ip_addr.c:su_getport Unexecuted instantiation: data_lump_rpl.c:su_getport Unexecuted instantiation: async.c:su_getport Unexecuted instantiation: daemonize.c:su_getport Unexecuted instantiation: timer.c:su_getport Unexecuted instantiation: trace_api.c:su_getport Unexecuted instantiation: mod_fix.c:su_getport Unexecuted instantiation: reactor.c:su_getport Unexecuted instantiation: strcommon.c:su_getport Unexecuted instantiation: forward.c:su_getport Unexecuted instantiation: xlog.c:su_getport Unexecuted instantiation: blacklists.c:su_getport Unexecuted instantiation: msg_callbacks.c:su_getport Unexecuted instantiation: usr_avp.c:su_getport Unexecuted instantiation: sl_cb.c:su_getport Unexecuted instantiation: sdp_ops.c:su_getport Unexecuted instantiation: resolve.c:su_getport Unexecuted instantiation: io_wait.c:su_getport Unexecuted instantiation: transformations.c:su_getport Unexecuted instantiation: pvar.c:su_getport Unexecuted instantiation: sr_module_deps.c:su_getport Unexecuted instantiation: cfg_reload.c:su_getport Unexecuted instantiation: socket_info.c:su_getport Unexecuted instantiation: time_rec.c:su_getport Unexecuted instantiation: data_lump.c:su_getport Unexecuted instantiation: status_report.c:su_getport Unexecuted instantiation: pt_scaling.c:su_getport Unexecuted instantiation: name_alias.c:su_getport Unexecuted instantiation: signals.c:su_getport Unexecuted instantiation: flags.c:su_getport Unexecuted instantiation: db_id.c:su_getport Unexecuted instantiation: trans.c:su_getport Unexecuted instantiation: sdp.c:su_getport Unexecuted instantiation: sdp_helpr_funcs.c:su_getport Unexecuted instantiation: digest_parser.c:su_getport Unexecuted instantiation: param_parser.c:su_getport Unexecuted instantiation: digest.c:su_getport Unexecuted instantiation: parse_contact.c:su_getport Unexecuted instantiation: parse_body.c:su_getport Unexecuted instantiation: parse_security.c:su_getport Unexecuted instantiation: parse_call_info.c:su_getport Unexecuted instantiation: parse_event.c:su_getport Unexecuted instantiation: parse_disposition.c:su_getport Unexecuted instantiation: parse_authenticate.c:su_getport Unexecuted instantiation: parser_f.c:su_getport Unexecuted instantiation: parse_rpid.c:su_getport Unexecuted instantiation: parse_ppi.c:su_getport Unexecuted instantiation: parse_fcaps.c:su_getport Unexecuted instantiation: parse_sst.c:su_getport Unexecuted instantiation: parse_rr.c:su_getport Unexecuted instantiation: parse_param.c:su_getport Unexecuted instantiation: parse_diversion.c:su_getport Unexecuted instantiation: parse_nameaddr.c:su_getport Unexecuted instantiation: parse_expires.c:su_getport Unexecuted instantiation: parse_refer_to.c:su_getport Unexecuted instantiation: parse_from.c:su_getport Unexecuted instantiation: parse_pai.c:su_getport Unexecuted instantiation: evi_transport.c:su_getport Unexecuted instantiation: msg_translator.c:su_getport Unexecuted instantiation: md5utils.c:su_getport Unexecuted instantiation: cfg.tab.c:su_getport Unexecuted instantiation: modparam.c:su_getport Unexecuted instantiation: crc.c:su_getport Unexecuted instantiation: re.c:su_getport Unexecuted instantiation: lex.yy.c:su_getport Unexecuted instantiation: cfg_pp.c:su_getport Unexecuted instantiation: proxy.c:su_getport Unexecuted instantiation: shutdown.c:su_getport Unexecuted instantiation: cmds.c:su_getport Unexecuted instantiation: core_cmds.c:su_getport Unexecuted instantiation: serialize.c:su_getport Unexecuted instantiation: cachedb.c:su_getport Unexecuted instantiation: cachedb_id.c:su_getport Unexecuted instantiation: fuzz_uri_parser.c:su_getport Unexecuted instantiation: fuzz_core_funcs.c:su_getport Unexecuted instantiation: fuzz_msg_parser.c:su_getport |
315 | | |
316 | | /*! \brief sets the port number (host byte order) */ |
317 | | static inline void su_setport(union sockaddr_union* su, unsigned short port) |
318 | 0 | { |
319 | 0 | switch(su->s.sa_family){ |
320 | 0 | case AF_INET: |
321 | 0 | su->sin.sin_port=htons(port); |
322 | 0 | break; |
323 | 0 | case AF_INET6: |
324 | 0 | su->sin6.sin6_port=htons(port); |
325 | 0 | break; |
326 | 0 | default: |
327 | 0 | LM_CRIT("unknown address family %d\n", su->s.sa_family); |
328 | 0 | } |
329 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:su_setport Unexecuted instantiation: csv.c:su_setport Unexecuted instantiation: dprint.c:su_setport Unexecuted instantiation: pt.c:su_setport Unexecuted instantiation: ut.c:su_setport Unexecuted instantiation: statistics.c:su_setport Unexecuted instantiation: route.c:su_setport Unexecuted instantiation: globals.c:su_setport Unexecuted instantiation: ipc.c:su_setport Unexecuted instantiation: core_stats.c:su_setport Unexecuted instantiation: route_struct.c:su_setport Unexecuted instantiation: dset.c:su_setport Unexecuted instantiation: pt_load.c:su_setport Unexecuted instantiation: sr_module.c:su_setport Unexecuted instantiation: action.c:su_setport Unexecuted instantiation: db_insertq.c:su_setport Unexecuted instantiation: db.c:su_setport Unexecuted instantiation: proto_tcp.c:su_setport Unexecuted instantiation: proto_udp.c:su_setport Unexecuted instantiation: net_tcp_proc.c:su_setport Unexecuted instantiation: proxy_protocol.c:su_setport Unexecuted instantiation: net_tcp.c:su_setport Unexecuted instantiation: tcp_common.c:su_setport Unexecuted instantiation: net_udp.c:su_setport Unexecuted instantiation: tcp_conn_profile.c:su_setport Unexecuted instantiation: trans_trace.c:su_setport Unexecuted instantiation: net_tcp_report.c:su_setport Unexecuted instantiation: shm_mem.c:su_setport Unexecuted instantiation: mi.c:su_setport Unexecuted instantiation: item.c:su_setport Unexecuted instantiation: msg_parser.c:su_setport Unexecuted instantiation: parse_uri.c:su_setport Unexecuted instantiation: parse_fline.c:su_setport Unexecuted instantiation: parse_methods.c:su_setport Unexecuted instantiation: parse_hname2.c:su_setport Unexecuted instantiation: parse_content.c:su_setport Unexecuted instantiation: hf.c:su_setport Unexecuted instantiation: parse_to.c:su_setport Unexecuted instantiation: parse_via.c:su_setport Unexecuted instantiation: event_interface.c:su_setport Unexecuted instantiation: receive.c:su_setport Unexecuted instantiation: error.c:su_setport Unexecuted instantiation: script_cb.c:su_setport Unexecuted instantiation: ip_addr.c:su_setport Unexecuted instantiation: data_lump_rpl.c:su_setport Unexecuted instantiation: async.c:su_setport Unexecuted instantiation: daemonize.c:su_setport Unexecuted instantiation: timer.c:su_setport Unexecuted instantiation: trace_api.c:su_setport Unexecuted instantiation: mod_fix.c:su_setport Unexecuted instantiation: reactor.c:su_setport Unexecuted instantiation: strcommon.c:su_setport Unexecuted instantiation: forward.c:su_setport Unexecuted instantiation: xlog.c:su_setport Unexecuted instantiation: blacklists.c:su_setport Unexecuted instantiation: msg_callbacks.c:su_setport Unexecuted instantiation: usr_avp.c:su_setport Unexecuted instantiation: sl_cb.c:su_setport Unexecuted instantiation: sdp_ops.c:su_setport Unexecuted instantiation: resolve.c:su_setport Unexecuted instantiation: io_wait.c:su_setport Unexecuted instantiation: transformations.c:su_setport Unexecuted instantiation: pvar.c:su_setport Unexecuted instantiation: sr_module_deps.c:su_setport Unexecuted instantiation: cfg_reload.c:su_setport Unexecuted instantiation: socket_info.c:su_setport Unexecuted instantiation: time_rec.c:su_setport Unexecuted instantiation: data_lump.c:su_setport Unexecuted instantiation: status_report.c:su_setport Unexecuted instantiation: pt_scaling.c:su_setport Unexecuted instantiation: name_alias.c:su_setport Unexecuted instantiation: signals.c:su_setport Unexecuted instantiation: flags.c:su_setport Unexecuted instantiation: db_id.c:su_setport Unexecuted instantiation: trans.c:su_setport Unexecuted instantiation: sdp.c:su_setport Unexecuted instantiation: sdp_helpr_funcs.c:su_setport Unexecuted instantiation: digest_parser.c:su_setport Unexecuted instantiation: param_parser.c:su_setport Unexecuted instantiation: digest.c:su_setport Unexecuted instantiation: parse_contact.c:su_setport Unexecuted instantiation: parse_body.c:su_setport Unexecuted instantiation: parse_security.c:su_setport Unexecuted instantiation: parse_call_info.c:su_setport Unexecuted instantiation: parse_event.c:su_setport Unexecuted instantiation: parse_disposition.c:su_setport Unexecuted instantiation: parse_authenticate.c:su_setport Unexecuted instantiation: parser_f.c:su_setport Unexecuted instantiation: parse_rpid.c:su_setport Unexecuted instantiation: parse_ppi.c:su_setport Unexecuted instantiation: parse_fcaps.c:su_setport Unexecuted instantiation: parse_sst.c:su_setport Unexecuted instantiation: parse_rr.c:su_setport Unexecuted instantiation: parse_param.c:su_setport Unexecuted instantiation: parse_diversion.c:su_setport Unexecuted instantiation: parse_nameaddr.c:su_setport Unexecuted instantiation: parse_expires.c:su_setport Unexecuted instantiation: parse_refer_to.c:su_setport Unexecuted instantiation: parse_from.c:su_setport Unexecuted instantiation: parse_pai.c:su_setport Unexecuted instantiation: evi_transport.c:su_setport Unexecuted instantiation: msg_translator.c:su_setport Unexecuted instantiation: md5utils.c:su_setport Unexecuted instantiation: cfg.tab.c:su_setport Unexecuted instantiation: modparam.c:su_setport Unexecuted instantiation: crc.c:su_setport Unexecuted instantiation: re.c:su_setport Unexecuted instantiation: lex.yy.c:su_setport Unexecuted instantiation: cfg_pp.c:su_setport Unexecuted instantiation: proxy.c:su_setport Unexecuted instantiation: shutdown.c:su_setport Unexecuted instantiation: cmds.c:su_setport Unexecuted instantiation: core_cmds.c:su_setport Unexecuted instantiation: serialize.c:su_setport Unexecuted instantiation: cachedb.c:su_setport Unexecuted instantiation: cachedb_id.c:su_setport Unexecuted instantiation: fuzz_uri_parser.c:su_setport Unexecuted instantiation: fuzz_core_funcs.c:su_setport Unexecuted instantiation: fuzz_msg_parser.c:su_setport |
330 | | |
331 | | /*! \brief inits an ip_addr pointer from a sockaddr_union ip address */ |
332 | | static inline void su2ip_addr(struct ip_addr* ip, const union sockaddr_union* su) |
333 | 0 | { |
334 | 0 | switch(su->s.sa_family){ |
335 | 0 | case AF_INET: |
336 | 0 | ip->af=AF_INET; |
337 | 0 | ip->len=4; |
338 | 0 | memcpy(ip->u.addr, &su->sin.sin_addr, 4); |
339 | 0 | break; |
340 | 0 | case AF_INET6: |
341 | 0 | ip->af=AF_INET6; |
342 | 0 | ip->len=16; |
343 | 0 | memcpy(ip->u.addr, &su->sin6.sin6_addr, 16); |
344 | 0 | break; |
345 | 0 | default: |
346 | 0 | LM_CRIT("Unknown address family %d\n", su->s.sa_family); |
347 | 0 | ip->af=0; |
348 | 0 | ip->len=0; |
349 | 0 | } |
350 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:su2ip_addr Unexecuted instantiation: csv.c:su2ip_addr Unexecuted instantiation: dprint.c:su2ip_addr Unexecuted instantiation: pt.c:su2ip_addr Unexecuted instantiation: ut.c:su2ip_addr Unexecuted instantiation: statistics.c:su2ip_addr Unexecuted instantiation: route.c:su2ip_addr Unexecuted instantiation: globals.c:su2ip_addr Unexecuted instantiation: ipc.c:su2ip_addr Unexecuted instantiation: core_stats.c:su2ip_addr Unexecuted instantiation: route_struct.c:su2ip_addr Unexecuted instantiation: dset.c:su2ip_addr Unexecuted instantiation: pt_load.c:su2ip_addr Unexecuted instantiation: sr_module.c:su2ip_addr Unexecuted instantiation: action.c:su2ip_addr Unexecuted instantiation: db_insertq.c:su2ip_addr Unexecuted instantiation: db.c:su2ip_addr Unexecuted instantiation: proto_tcp.c:su2ip_addr Unexecuted instantiation: proto_udp.c:su2ip_addr Unexecuted instantiation: net_tcp_proc.c:su2ip_addr Unexecuted instantiation: proxy_protocol.c:su2ip_addr Unexecuted instantiation: net_tcp.c:su2ip_addr Unexecuted instantiation: tcp_common.c:su2ip_addr Unexecuted instantiation: net_udp.c:su2ip_addr Unexecuted instantiation: tcp_conn_profile.c:su2ip_addr Unexecuted instantiation: trans_trace.c:su2ip_addr Unexecuted instantiation: net_tcp_report.c:su2ip_addr Unexecuted instantiation: shm_mem.c:su2ip_addr Unexecuted instantiation: mi.c:su2ip_addr Unexecuted instantiation: item.c:su2ip_addr Unexecuted instantiation: msg_parser.c:su2ip_addr Unexecuted instantiation: parse_uri.c:su2ip_addr Unexecuted instantiation: parse_fline.c:su2ip_addr Unexecuted instantiation: parse_methods.c:su2ip_addr Unexecuted instantiation: parse_hname2.c:su2ip_addr Unexecuted instantiation: parse_content.c:su2ip_addr Unexecuted instantiation: hf.c:su2ip_addr Unexecuted instantiation: parse_to.c:su2ip_addr Unexecuted instantiation: parse_via.c:su2ip_addr Unexecuted instantiation: event_interface.c:su2ip_addr Unexecuted instantiation: receive.c:su2ip_addr Unexecuted instantiation: error.c:su2ip_addr Unexecuted instantiation: script_cb.c:su2ip_addr Unexecuted instantiation: ip_addr.c:su2ip_addr Unexecuted instantiation: data_lump_rpl.c:su2ip_addr Unexecuted instantiation: async.c:su2ip_addr Unexecuted instantiation: daemonize.c:su2ip_addr Unexecuted instantiation: timer.c:su2ip_addr Unexecuted instantiation: trace_api.c:su2ip_addr Unexecuted instantiation: mod_fix.c:su2ip_addr Unexecuted instantiation: reactor.c:su2ip_addr Unexecuted instantiation: strcommon.c:su2ip_addr Unexecuted instantiation: forward.c:su2ip_addr Unexecuted instantiation: xlog.c:su2ip_addr Unexecuted instantiation: blacklists.c:su2ip_addr Unexecuted instantiation: msg_callbacks.c:su2ip_addr Unexecuted instantiation: usr_avp.c:su2ip_addr Unexecuted instantiation: sl_cb.c:su2ip_addr Unexecuted instantiation: sdp_ops.c:su2ip_addr Unexecuted instantiation: resolve.c:su2ip_addr Unexecuted instantiation: io_wait.c:su2ip_addr Unexecuted instantiation: transformations.c:su2ip_addr Unexecuted instantiation: pvar.c:su2ip_addr Unexecuted instantiation: sr_module_deps.c:su2ip_addr Unexecuted instantiation: cfg_reload.c:su2ip_addr Unexecuted instantiation: socket_info.c:su2ip_addr Unexecuted instantiation: time_rec.c:su2ip_addr Unexecuted instantiation: data_lump.c:su2ip_addr Unexecuted instantiation: status_report.c:su2ip_addr Unexecuted instantiation: pt_scaling.c:su2ip_addr Unexecuted instantiation: name_alias.c:su2ip_addr Unexecuted instantiation: signals.c:su2ip_addr Unexecuted instantiation: flags.c:su2ip_addr Unexecuted instantiation: db_id.c:su2ip_addr Unexecuted instantiation: trans.c:su2ip_addr Unexecuted instantiation: sdp.c:su2ip_addr Unexecuted instantiation: sdp_helpr_funcs.c:su2ip_addr Unexecuted instantiation: digest_parser.c:su2ip_addr Unexecuted instantiation: param_parser.c:su2ip_addr Unexecuted instantiation: digest.c:su2ip_addr Unexecuted instantiation: parse_contact.c:su2ip_addr Unexecuted instantiation: parse_body.c:su2ip_addr Unexecuted instantiation: parse_security.c:su2ip_addr Unexecuted instantiation: parse_call_info.c:su2ip_addr Unexecuted instantiation: parse_event.c:su2ip_addr Unexecuted instantiation: parse_disposition.c:su2ip_addr Unexecuted instantiation: parse_authenticate.c:su2ip_addr Unexecuted instantiation: parser_f.c:su2ip_addr Unexecuted instantiation: parse_rpid.c:su2ip_addr Unexecuted instantiation: parse_ppi.c:su2ip_addr Unexecuted instantiation: parse_fcaps.c:su2ip_addr Unexecuted instantiation: parse_sst.c:su2ip_addr Unexecuted instantiation: parse_rr.c:su2ip_addr Unexecuted instantiation: parse_param.c:su2ip_addr Unexecuted instantiation: parse_diversion.c:su2ip_addr Unexecuted instantiation: parse_nameaddr.c:su2ip_addr Unexecuted instantiation: parse_expires.c:su2ip_addr Unexecuted instantiation: parse_refer_to.c:su2ip_addr Unexecuted instantiation: parse_from.c:su2ip_addr Unexecuted instantiation: parse_pai.c:su2ip_addr Unexecuted instantiation: evi_transport.c:su2ip_addr Unexecuted instantiation: msg_translator.c:su2ip_addr Unexecuted instantiation: md5utils.c:su2ip_addr Unexecuted instantiation: cfg.tab.c:su2ip_addr Unexecuted instantiation: modparam.c:su2ip_addr Unexecuted instantiation: crc.c:su2ip_addr Unexecuted instantiation: re.c:su2ip_addr Unexecuted instantiation: lex.yy.c:su2ip_addr Unexecuted instantiation: cfg_pp.c:su2ip_addr Unexecuted instantiation: proxy.c:su2ip_addr Unexecuted instantiation: shutdown.c:su2ip_addr Unexecuted instantiation: cmds.c:su2ip_addr Unexecuted instantiation: core_cmds.c:su2ip_addr Unexecuted instantiation: serialize.c:su2ip_addr Unexecuted instantiation: cachedb.c:su2ip_addr Unexecuted instantiation: cachedb_id.c:su2ip_addr Unexecuted instantiation: fuzz_uri_parser.c:su2ip_addr Unexecuted instantiation: fuzz_core_funcs.c:su2ip_addr Unexecuted instantiation: fuzz_msg_parser.c:su2ip_addr |
351 | | |
352 | | |
353 | | /*! \brief ip_addr2su -> the same as \ref init_su() */ |
354 | | #define ip_addr2su init_su |
355 | | |
356 | | /*! \brief inits a struct sockaddr_union from a struct ip_addr and a port no |
357 | | * \return 0 if ok, -1 on error (unknown address family) |
358 | | * \note the port number is in host byte order */ |
359 | | static inline int init_su( union sockaddr_union* su, |
360 | | const struct ip_addr* ip, |
361 | | unsigned short port ) |
362 | 0 | { |
363 | 0 | memset(su, 0, sizeof(union sockaddr_union));/*needed on freebsd*/ |
364 | 0 | su->s.sa_family=ip->af; |
365 | 0 | switch(ip->af){ |
366 | 0 | case AF_INET6: |
367 | 0 | memcpy(&su->sin6.sin6_addr, ip->u.addr, ip->len); |
368 | | #ifdef HAVE_SOCKADDR_SA_LEN |
369 | | su->sin6.sin6_len=sizeof(struct sockaddr_in6); |
370 | | #endif |
371 | 0 | su->sin6.sin6_port=htons(port); |
372 | 0 | break; |
373 | 0 | case AF_INET: |
374 | 0 | memcpy(&su->sin.sin_addr, ip->u.addr, ip->len); |
375 | | #ifdef HAVE_SOCKADDR_SA_LEN |
376 | | su->sin.sin_len=sizeof(struct sockaddr_in); |
377 | | #endif |
378 | 0 | su->sin.sin_port=htons(port); |
379 | 0 | break; |
380 | 0 | default: |
381 | 0 | LM_CRIT("unknown address family %d\n", ip->af); |
382 | 0 | return -1; |
383 | 0 | } |
384 | 0 | return 0; |
385 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:init_su Unexecuted instantiation: csv.c:init_su Unexecuted instantiation: dprint.c:init_su Unexecuted instantiation: pt.c:init_su Unexecuted instantiation: ut.c:init_su Unexecuted instantiation: statistics.c:init_su Unexecuted instantiation: route.c:init_su Unexecuted instantiation: globals.c:init_su Unexecuted instantiation: ipc.c:init_su Unexecuted instantiation: core_stats.c:init_su Unexecuted instantiation: route_struct.c:init_su Unexecuted instantiation: dset.c:init_su Unexecuted instantiation: pt_load.c:init_su Unexecuted instantiation: sr_module.c:init_su Unexecuted instantiation: action.c:init_su Unexecuted instantiation: db_insertq.c:init_su Unexecuted instantiation: db.c:init_su Unexecuted instantiation: proto_tcp.c:init_su Unexecuted instantiation: proto_udp.c:init_su Unexecuted instantiation: net_tcp_proc.c:init_su Unexecuted instantiation: proxy_protocol.c:init_su Unexecuted instantiation: net_tcp.c:init_su Unexecuted instantiation: tcp_common.c:init_su Unexecuted instantiation: net_udp.c:init_su Unexecuted instantiation: tcp_conn_profile.c:init_su Unexecuted instantiation: trans_trace.c:init_su Unexecuted instantiation: net_tcp_report.c:init_su Unexecuted instantiation: shm_mem.c:init_su Unexecuted instantiation: mi.c:init_su Unexecuted instantiation: item.c:init_su Unexecuted instantiation: msg_parser.c:init_su Unexecuted instantiation: parse_uri.c:init_su Unexecuted instantiation: parse_fline.c:init_su Unexecuted instantiation: parse_methods.c:init_su Unexecuted instantiation: parse_hname2.c:init_su Unexecuted instantiation: parse_content.c:init_su Unexecuted instantiation: hf.c:init_su Unexecuted instantiation: parse_to.c:init_su Unexecuted instantiation: parse_via.c:init_su Unexecuted instantiation: event_interface.c:init_su Unexecuted instantiation: receive.c:init_su Unexecuted instantiation: error.c:init_su Unexecuted instantiation: script_cb.c:init_su Unexecuted instantiation: ip_addr.c:init_su Unexecuted instantiation: data_lump_rpl.c:init_su Unexecuted instantiation: async.c:init_su Unexecuted instantiation: daemonize.c:init_su Unexecuted instantiation: timer.c:init_su Unexecuted instantiation: trace_api.c:init_su Unexecuted instantiation: mod_fix.c:init_su Unexecuted instantiation: reactor.c:init_su Unexecuted instantiation: strcommon.c:init_su Unexecuted instantiation: forward.c:init_su Unexecuted instantiation: xlog.c:init_su Unexecuted instantiation: blacklists.c:init_su Unexecuted instantiation: msg_callbacks.c:init_su Unexecuted instantiation: usr_avp.c:init_su Unexecuted instantiation: sl_cb.c:init_su Unexecuted instantiation: sdp_ops.c:init_su Unexecuted instantiation: resolve.c:init_su Unexecuted instantiation: io_wait.c:init_su Unexecuted instantiation: transformations.c:init_su Unexecuted instantiation: pvar.c:init_su Unexecuted instantiation: sr_module_deps.c:init_su Unexecuted instantiation: cfg_reload.c:init_su Unexecuted instantiation: socket_info.c:init_su Unexecuted instantiation: time_rec.c:init_su Unexecuted instantiation: data_lump.c:init_su Unexecuted instantiation: status_report.c:init_su Unexecuted instantiation: pt_scaling.c:init_su Unexecuted instantiation: name_alias.c:init_su Unexecuted instantiation: signals.c:init_su Unexecuted instantiation: flags.c:init_su Unexecuted instantiation: db_id.c:init_su Unexecuted instantiation: trans.c:init_su Unexecuted instantiation: sdp.c:init_su Unexecuted instantiation: sdp_helpr_funcs.c:init_su Unexecuted instantiation: digest_parser.c:init_su Unexecuted instantiation: param_parser.c:init_su Unexecuted instantiation: digest.c:init_su Unexecuted instantiation: parse_contact.c:init_su Unexecuted instantiation: parse_body.c:init_su Unexecuted instantiation: parse_security.c:init_su Unexecuted instantiation: parse_call_info.c:init_su Unexecuted instantiation: parse_event.c:init_su Unexecuted instantiation: parse_disposition.c:init_su Unexecuted instantiation: parse_authenticate.c:init_su Unexecuted instantiation: parser_f.c:init_su Unexecuted instantiation: parse_rpid.c:init_su Unexecuted instantiation: parse_ppi.c:init_su Unexecuted instantiation: parse_fcaps.c:init_su Unexecuted instantiation: parse_sst.c:init_su Unexecuted instantiation: parse_rr.c:init_su Unexecuted instantiation: parse_param.c:init_su Unexecuted instantiation: parse_diversion.c:init_su Unexecuted instantiation: parse_nameaddr.c:init_su Unexecuted instantiation: parse_expires.c:init_su Unexecuted instantiation: parse_refer_to.c:init_su Unexecuted instantiation: parse_from.c:init_su Unexecuted instantiation: parse_pai.c:init_su Unexecuted instantiation: evi_transport.c:init_su Unexecuted instantiation: msg_translator.c:init_su Unexecuted instantiation: md5utils.c:init_su Unexecuted instantiation: cfg.tab.c:init_su Unexecuted instantiation: modparam.c:init_su Unexecuted instantiation: crc.c:init_su Unexecuted instantiation: re.c:init_su Unexecuted instantiation: lex.yy.c:init_su Unexecuted instantiation: cfg_pp.c:init_su Unexecuted instantiation: proxy.c:init_su Unexecuted instantiation: shutdown.c:init_su Unexecuted instantiation: cmds.c:init_su Unexecuted instantiation: core_cmds.c:init_su Unexecuted instantiation: serialize.c:init_su Unexecuted instantiation: cachedb.c:init_su Unexecuted instantiation: cachedb_id.c:init_su Unexecuted instantiation: fuzz_uri_parser.c:init_su Unexecuted instantiation: fuzz_core_funcs.c:init_su Unexecuted instantiation: fuzz_msg_parser.c:init_su |
386 | | |
387 | | |
388 | | |
389 | | /*! \brief inits a struct sockaddr_union from a struct hostent, an address index in |
390 | | * the hostent structure and a port no. (host byte order) |
391 | | * WARNING: no index overflow checks! |
392 | | * \return 0 if ok, -1 on error (unknown address family) */ |
393 | | static inline int hostent2su( union sockaddr_union* su, |
394 | | const struct hostent* he, |
395 | | unsigned int idx, |
396 | | unsigned short port ) |
397 | 0 | { |
398 | 0 | memset(su, 0, sizeof(union sockaddr_union)); /*needed on freebsd*/ |
399 | 0 | su->s.sa_family=he->h_addrtype; |
400 | 0 | switch(he->h_addrtype){ |
401 | 0 | case AF_INET6: |
402 | 0 | memcpy(&su->sin6.sin6_addr, he->h_addr_list[idx], he->h_length); |
403 | | #ifdef HAVE_SOCKADDR_SA_LEN |
404 | | su->sin6.sin6_len=sizeof(struct sockaddr_in6); |
405 | | #endif |
406 | 0 | su->sin6.sin6_port=htons(port); |
407 | 0 | break; |
408 | 0 | case AF_INET: |
409 | 0 | memcpy(&su->sin.sin_addr, he->h_addr_list[idx], he->h_length); |
410 | | #ifdef HAVE_SOCKADDR_SA_LEN |
411 | | su->sin.sin_len=sizeof(struct sockaddr_in); |
412 | | #endif |
413 | 0 | su->sin.sin_port=htons(port); |
414 | 0 | break; |
415 | 0 | default: |
416 | 0 | LM_CRIT("unknown address family %d\n", he->h_addrtype); |
417 | 0 | return -1; |
418 | 0 | } |
419 | 0 | return 0; |
420 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:hostent2su Unexecuted instantiation: csv.c:hostent2su Unexecuted instantiation: dprint.c:hostent2su Unexecuted instantiation: pt.c:hostent2su Unexecuted instantiation: ut.c:hostent2su Unexecuted instantiation: statistics.c:hostent2su Unexecuted instantiation: route.c:hostent2su Unexecuted instantiation: globals.c:hostent2su Unexecuted instantiation: ipc.c:hostent2su Unexecuted instantiation: core_stats.c:hostent2su Unexecuted instantiation: route_struct.c:hostent2su Unexecuted instantiation: dset.c:hostent2su Unexecuted instantiation: pt_load.c:hostent2su Unexecuted instantiation: sr_module.c:hostent2su Unexecuted instantiation: action.c:hostent2su Unexecuted instantiation: db_insertq.c:hostent2su Unexecuted instantiation: db.c:hostent2su Unexecuted instantiation: proto_tcp.c:hostent2su Unexecuted instantiation: proto_udp.c:hostent2su Unexecuted instantiation: net_tcp_proc.c:hostent2su Unexecuted instantiation: proxy_protocol.c:hostent2su Unexecuted instantiation: net_tcp.c:hostent2su Unexecuted instantiation: tcp_common.c:hostent2su Unexecuted instantiation: net_udp.c:hostent2su Unexecuted instantiation: tcp_conn_profile.c:hostent2su Unexecuted instantiation: trans_trace.c:hostent2su Unexecuted instantiation: net_tcp_report.c:hostent2su Unexecuted instantiation: shm_mem.c:hostent2su Unexecuted instantiation: mi.c:hostent2su Unexecuted instantiation: item.c:hostent2su Unexecuted instantiation: msg_parser.c:hostent2su Unexecuted instantiation: parse_uri.c:hostent2su Unexecuted instantiation: parse_fline.c:hostent2su Unexecuted instantiation: parse_methods.c:hostent2su Unexecuted instantiation: parse_hname2.c:hostent2su Unexecuted instantiation: parse_content.c:hostent2su Unexecuted instantiation: hf.c:hostent2su Unexecuted instantiation: parse_to.c:hostent2su Unexecuted instantiation: parse_via.c:hostent2su Unexecuted instantiation: event_interface.c:hostent2su Unexecuted instantiation: receive.c:hostent2su Unexecuted instantiation: error.c:hostent2su Unexecuted instantiation: script_cb.c:hostent2su Unexecuted instantiation: ip_addr.c:hostent2su Unexecuted instantiation: data_lump_rpl.c:hostent2su Unexecuted instantiation: async.c:hostent2su Unexecuted instantiation: daemonize.c:hostent2su Unexecuted instantiation: timer.c:hostent2su Unexecuted instantiation: trace_api.c:hostent2su Unexecuted instantiation: mod_fix.c:hostent2su Unexecuted instantiation: reactor.c:hostent2su Unexecuted instantiation: strcommon.c:hostent2su Unexecuted instantiation: forward.c:hostent2su Unexecuted instantiation: xlog.c:hostent2su Unexecuted instantiation: blacklists.c:hostent2su Unexecuted instantiation: msg_callbacks.c:hostent2su Unexecuted instantiation: usr_avp.c:hostent2su Unexecuted instantiation: sl_cb.c:hostent2su Unexecuted instantiation: sdp_ops.c:hostent2su Unexecuted instantiation: resolve.c:hostent2su Unexecuted instantiation: io_wait.c:hostent2su Unexecuted instantiation: transformations.c:hostent2su Unexecuted instantiation: pvar.c:hostent2su Unexecuted instantiation: sr_module_deps.c:hostent2su Unexecuted instantiation: cfg_reload.c:hostent2su Unexecuted instantiation: socket_info.c:hostent2su Unexecuted instantiation: time_rec.c:hostent2su Unexecuted instantiation: data_lump.c:hostent2su Unexecuted instantiation: status_report.c:hostent2su Unexecuted instantiation: pt_scaling.c:hostent2su Unexecuted instantiation: name_alias.c:hostent2su Unexecuted instantiation: signals.c:hostent2su Unexecuted instantiation: flags.c:hostent2su Unexecuted instantiation: db_id.c:hostent2su Unexecuted instantiation: trans.c:hostent2su Unexecuted instantiation: sdp.c:hostent2su Unexecuted instantiation: sdp_helpr_funcs.c:hostent2su Unexecuted instantiation: digest_parser.c:hostent2su Unexecuted instantiation: param_parser.c:hostent2su Unexecuted instantiation: digest.c:hostent2su Unexecuted instantiation: parse_contact.c:hostent2su Unexecuted instantiation: parse_body.c:hostent2su Unexecuted instantiation: parse_security.c:hostent2su Unexecuted instantiation: parse_call_info.c:hostent2su Unexecuted instantiation: parse_event.c:hostent2su Unexecuted instantiation: parse_disposition.c:hostent2su Unexecuted instantiation: parse_authenticate.c:hostent2su Unexecuted instantiation: parser_f.c:hostent2su Unexecuted instantiation: parse_rpid.c:hostent2su Unexecuted instantiation: parse_ppi.c:hostent2su Unexecuted instantiation: parse_fcaps.c:hostent2su Unexecuted instantiation: parse_sst.c:hostent2su Unexecuted instantiation: parse_rr.c:hostent2su Unexecuted instantiation: parse_param.c:hostent2su Unexecuted instantiation: parse_diversion.c:hostent2su Unexecuted instantiation: parse_nameaddr.c:hostent2su Unexecuted instantiation: parse_expires.c:hostent2su Unexecuted instantiation: parse_refer_to.c:hostent2su Unexecuted instantiation: parse_from.c:hostent2su Unexecuted instantiation: parse_pai.c:hostent2su Unexecuted instantiation: evi_transport.c:hostent2su Unexecuted instantiation: msg_translator.c:hostent2su Unexecuted instantiation: md5utils.c:hostent2su Unexecuted instantiation: cfg.tab.c:hostent2su Unexecuted instantiation: modparam.c:hostent2su Unexecuted instantiation: crc.c:hostent2su Unexecuted instantiation: re.c:hostent2su Unexecuted instantiation: lex.yy.c:hostent2su Unexecuted instantiation: cfg_pp.c:hostent2su Unexecuted instantiation: proxy.c:hostent2su Unexecuted instantiation: shutdown.c:hostent2su Unexecuted instantiation: cmds.c:hostent2su Unexecuted instantiation: core_cmds.c:hostent2su Unexecuted instantiation: serialize.c:hostent2su Unexecuted instantiation: cachedb.c:hostent2su Unexecuted instantiation: cachedb_id.c:hostent2su Unexecuted instantiation: fuzz_uri_parser.c:hostent2su Unexecuted instantiation: fuzz_core_funcs.c:hostent2su Unexecuted instantiation: fuzz_msg_parser.c:hostent2su |
421 | | |
422 | | /*! \brief maximum size of a str returned by ip_addr2a (including \\0') */ |
423 | 0 | #define IP_ADDR_MAX_STR_SIZE 40 /* 1234:5678:9012:3456:7890:1234:5678:9012\0 */ |
424 | 31.2k | #define IP_ADDR2STR_BUF_NO 4 |
425 | | |
426 | | /*! \brief fast ip_addr -> string converter; |
427 | | * it uses an internal buffer |
428 | | */ |
429 | | extern char _ip_addr_A_buffs[IP_ADDR2STR_BUF_NO][IP_ADDR_MAX_STR_SIZE]; |
430 | | static inline char* ip_addr2a(struct ip_addr* ip) |
431 | 31.2k | { |
432 | 31.2k | static unsigned int it = 0; |
433 | 31.2k | int offset; |
434 | 31.2k | register unsigned char a,b,c; |
435 | 31.2k | register unsigned char d; |
436 | 31.2k | register unsigned short hex4; |
437 | 31.2k | int r; |
438 | 31.2k | char *_ip_addr_A_buff; |
439 | 31.2k | #define HEXDIG(x) (((x)>=10)?(x)-10+'A':(x)+'0') |
440 | | |
441 | 31.2k | if ((++it)==IP_ADDR2STR_BUF_NO) it = 0; |
442 | 31.2k | _ip_addr_A_buff = _ip_addr_A_buffs[it]; |
443 | | |
444 | 31.2k | offset=0; |
445 | 31.2k | switch(ip->af){ |
446 | 0 | case AF_INET6: |
447 | 0 | for(r=0;r<7;r++){ |
448 | 0 | hex4=ntohs(ip->u.addr16[r]); |
449 | 0 | a=hex4>>12; |
450 | 0 | b=(hex4>>8)&0xf; |
451 | 0 | c=(hex4>>4)&0xf; |
452 | 0 | d=hex4&0xf; |
453 | 0 | if (a){ |
454 | 0 | _ip_addr_A_buff[offset]=HEXDIG(a); |
455 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(b); |
456 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(c); |
457 | 0 | _ip_addr_A_buff[offset+3]=HEXDIG(d); |
458 | 0 | _ip_addr_A_buff[offset+4]=':'; |
459 | 0 | offset+=5; |
460 | 0 | }else if(b){ |
461 | 0 | _ip_addr_A_buff[offset]=HEXDIG(b); |
462 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(c); |
463 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(d); |
464 | 0 | _ip_addr_A_buff[offset+3]=':'; |
465 | 0 | offset+=4; |
466 | 0 | }else if(c){ |
467 | 0 | _ip_addr_A_buff[offset]=HEXDIG(c); |
468 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(d); |
469 | 0 | _ip_addr_A_buff[offset+2]=':'; |
470 | 0 | offset+=3; |
471 | 0 | }else{ |
472 | 0 | _ip_addr_A_buff[offset]=HEXDIG(d); |
473 | 0 | _ip_addr_A_buff[offset+1]=':'; |
474 | 0 | offset+=2; |
475 | 0 | } |
476 | 0 | } |
477 | | /* last int16*/ |
478 | 0 | hex4=ntohs(ip->u.addr16[r]); |
479 | 0 | a=hex4>>12; |
480 | 0 | b=(hex4>>8)&0xf; |
481 | 0 | c=(hex4>>4)&0xf; |
482 | 0 | d=hex4&0xf; |
483 | 0 | if (a){ |
484 | 0 | _ip_addr_A_buff[offset]=HEXDIG(a); |
485 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(b); |
486 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(c); |
487 | 0 | _ip_addr_A_buff[offset+3]=HEXDIG(d); |
488 | 0 | _ip_addr_A_buff[offset+4]=0; |
489 | 0 | }else if(b){ |
490 | 0 | _ip_addr_A_buff[offset]=HEXDIG(b); |
491 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(c); |
492 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(d); |
493 | 0 | _ip_addr_A_buff[offset+3]=0; |
494 | 0 | }else if(c){ |
495 | 0 | _ip_addr_A_buff[offset]=HEXDIG(c); |
496 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(d); |
497 | 0 | _ip_addr_A_buff[offset+2]=0; |
498 | 0 | }else{ |
499 | 0 | _ip_addr_A_buff[offset]=HEXDIG(d); |
500 | 0 | _ip_addr_A_buff[offset+1]=0; |
501 | 0 | } |
502 | 0 | break; |
503 | 31.2k | case AF_INET: |
504 | 124k | for(r=0;r<3;r++){ |
505 | 93.6k | a=ip->u.addr[r]/100; |
506 | 93.6k | c=ip->u.addr[r]%10; |
507 | 93.6k | b=ip->u.addr[r]%100/10; |
508 | 93.6k | if (a){ |
509 | 0 | _ip_addr_A_buff[offset]=a+'0'; |
510 | 0 | _ip_addr_A_buff[offset+1]=b+'0'; |
511 | 0 | _ip_addr_A_buff[offset+2]=c+'0'; |
512 | 0 | _ip_addr_A_buff[offset+3]='.'; |
513 | 0 | offset+=4; |
514 | 93.6k | }else if (b){ |
515 | 0 | _ip_addr_A_buff[offset]=b+'0'; |
516 | 0 | _ip_addr_A_buff[offset+1]=c+'0'; |
517 | 0 | _ip_addr_A_buff[offset+2]='.'; |
518 | 0 | offset+=3; |
519 | 93.6k | }else{ |
520 | 93.6k | _ip_addr_A_buff[offset]=c+'0'; |
521 | 93.6k | _ip_addr_A_buff[offset+1]='.'; |
522 | 93.6k | offset+=2; |
523 | 93.6k | } |
524 | 93.6k | } |
525 | | /* last number */ |
526 | 31.2k | a=ip->u.addr[r]/100; |
527 | 31.2k | c=ip->u.addr[r]%10; |
528 | 31.2k | b=ip->u.addr[r]%100/10; |
529 | 31.2k | if (a){ |
530 | 0 | _ip_addr_A_buff[offset]=a+'0'; |
531 | 0 | _ip_addr_A_buff[offset+1]=b+'0'; |
532 | 0 | _ip_addr_A_buff[offset+2]=c+'0'; |
533 | 0 | _ip_addr_A_buff[offset+3]=0; |
534 | 31.2k | }else if (b){ |
535 | 0 | _ip_addr_A_buff[offset]=b+'0'; |
536 | 0 | _ip_addr_A_buff[offset+1]=c+'0'; |
537 | 0 | _ip_addr_A_buff[offset+2]=0; |
538 | 31.2k | }else{ |
539 | 31.2k | _ip_addr_A_buff[offset]=c+'0'; |
540 | 31.2k | _ip_addr_A_buff[offset+1]=0; |
541 | 31.2k | } |
542 | 31.2k | break; |
543 | | |
544 | 0 | default: |
545 | 0 | LM_CRIT("unknown address family %d\n", ip->af); |
546 | 0 | _ip_addr_A_buff[0] = '\0'; |
547 | 31.2k | } |
548 | | |
549 | 31.2k | return _ip_addr_A_buff; |
550 | 31.2k | } Unexecuted instantiation: fuzz_csv_parser.c:ip_addr2a Unexecuted instantiation: csv.c:ip_addr2a Unexecuted instantiation: dprint.c:ip_addr2a Unexecuted instantiation: pt.c:ip_addr2a Unexecuted instantiation: ut.c:ip_addr2a Unexecuted instantiation: statistics.c:ip_addr2a Unexecuted instantiation: route.c:ip_addr2a Unexecuted instantiation: globals.c:ip_addr2a Unexecuted instantiation: ipc.c:ip_addr2a Unexecuted instantiation: core_stats.c:ip_addr2a Unexecuted instantiation: route_struct.c:ip_addr2a Unexecuted instantiation: dset.c:ip_addr2a Unexecuted instantiation: pt_load.c:ip_addr2a Unexecuted instantiation: sr_module.c:ip_addr2a Unexecuted instantiation: action.c:ip_addr2a Unexecuted instantiation: db_insertq.c:ip_addr2a Unexecuted instantiation: db.c:ip_addr2a Unexecuted instantiation: proto_tcp.c:ip_addr2a Unexecuted instantiation: proto_udp.c:ip_addr2a Unexecuted instantiation: net_tcp_proc.c:ip_addr2a Unexecuted instantiation: proxy_protocol.c:ip_addr2a Unexecuted instantiation: net_tcp.c:ip_addr2a Unexecuted instantiation: tcp_common.c:ip_addr2a Unexecuted instantiation: net_udp.c:ip_addr2a Unexecuted instantiation: tcp_conn_profile.c:ip_addr2a Unexecuted instantiation: trans_trace.c:ip_addr2a Unexecuted instantiation: net_tcp_report.c:ip_addr2a Unexecuted instantiation: shm_mem.c:ip_addr2a Unexecuted instantiation: mi.c:ip_addr2a Unexecuted instantiation: item.c:ip_addr2a Unexecuted instantiation: msg_parser.c:ip_addr2a Unexecuted instantiation: parse_uri.c:ip_addr2a Unexecuted instantiation: parse_fline.c:ip_addr2a Unexecuted instantiation: parse_methods.c:ip_addr2a Unexecuted instantiation: parse_hname2.c:ip_addr2a Unexecuted instantiation: parse_content.c:ip_addr2a Unexecuted instantiation: hf.c:ip_addr2a Unexecuted instantiation: parse_to.c:ip_addr2a Unexecuted instantiation: parse_via.c:ip_addr2a Unexecuted instantiation: event_interface.c:ip_addr2a Unexecuted instantiation: receive.c:ip_addr2a Unexecuted instantiation: error.c:ip_addr2a Unexecuted instantiation: script_cb.c:ip_addr2a Unexecuted instantiation: ip_addr.c:ip_addr2a Unexecuted instantiation: data_lump_rpl.c:ip_addr2a Unexecuted instantiation: async.c:ip_addr2a Unexecuted instantiation: daemonize.c:ip_addr2a Unexecuted instantiation: timer.c:ip_addr2a Unexecuted instantiation: trace_api.c:ip_addr2a Unexecuted instantiation: mod_fix.c:ip_addr2a Unexecuted instantiation: reactor.c:ip_addr2a Unexecuted instantiation: strcommon.c:ip_addr2a Unexecuted instantiation: forward.c:ip_addr2a Unexecuted instantiation: xlog.c:ip_addr2a Unexecuted instantiation: blacklists.c:ip_addr2a Unexecuted instantiation: msg_callbacks.c:ip_addr2a Unexecuted instantiation: usr_avp.c:ip_addr2a Unexecuted instantiation: sl_cb.c:ip_addr2a Unexecuted instantiation: sdp_ops.c:ip_addr2a Unexecuted instantiation: resolve.c:ip_addr2a Unexecuted instantiation: io_wait.c:ip_addr2a Unexecuted instantiation: transformations.c:ip_addr2a Line | Count | Source | 431 | 20.8k | { | 432 | 20.8k | static unsigned int it = 0; | 433 | 20.8k | int offset; | 434 | 20.8k | register unsigned char a,b,c; | 435 | 20.8k | register unsigned char d; | 436 | 20.8k | register unsigned short hex4; | 437 | 20.8k | int r; | 438 | 20.8k | char *_ip_addr_A_buff; | 439 | 20.8k | #define HEXDIG(x) (((x)>=10)?(x)-10+'A':(x)+'0') | 440 | | | 441 | 20.8k | if ((++it)==IP_ADDR2STR_BUF_NO) it = 0; | 442 | 20.8k | _ip_addr_A_buff = _ip_addr_A_buffs[it]; | 443 | | | 444 | 20.8k | offset=0; | 445 | 20.8k | switch(ip->af){ | 446 | 0 | case AF_INET6: | 447 | 0 | for(r=0;r<7;r++){ | 448 | 0 | hex4=ntohs(ip->u.addr16[r]); | 449 | 0 | a=hex4>>12; | 450 | 0 | b=(hex4>>8)&0xf; | 451 | 0 | c=(hex4>>4)&0xf; | 452 | 0 | d=hex4&0xf; | 453 | 0 | if (a){ | 454 | 0 | _ip_addr_A_buff[offset]=HEXDIG(a); | 455 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(b); | 456 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(c); | 457 | 0 | _ip_addr_A_buff[offset+3]=HEXDIG(d); | 458 | 0 | _ip_addr_A_buff[offset+4]=':'; | 459 | 0 | offset+=5; | 460 | 0 | }else if(b){ | 461 | 0 | _ip_addr_A_buff[offset]=HEXDIG(b); | 462 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(c); | 463 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(d); | 464 | 0 | _ip_addr_A_buff[offset+3]=':'; | 465 | 0 | offset+=4; | 466 | 0 | }else if(c){ | 467 | 0 | _ip_addr_A_buff[offset]=HEXDIG(c); | 468 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(d); | 469 | 0 | _ip_addr_A_buff[offset+2]=':'; | 470 | 0 | offset+=3; | 471 | 0 | }else{ | 472 | 0 | _ip_addr_A_buff[offset]=HEXDIG(d); | 473 | 0 | _ip_addr_A_buff[offset+1]=':'; | 474 | 0 | offset+=2; | 475 | 0 | } | 476 | 0 | } | 477 | | /* last int16*/ | 478 | 0 | hex4=ntohs(ip->u.addr16[r]); | 479 | 0 | a=hex4>>12; | 480 | 0 | b=(hex4>>8)&0xf; | 481 | 0 | c=(hex4>>4)&0xf; | 482 | 0 | d=hex4&0xf; | 483 | 0 | if (a){ | 484 | 0 | _ip_addr_A_buff[offset]=HEXDIG(a); | 485 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(b); | 486 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(c); | 487 | 0 | _ip_addr_A_buff[offset+3]=HEXDIG(d); | 488 | 0 | _ip_addr_A_buff[offset+4]=0; | 489 | 0 | }else if(b){ | 490 | 0 | _ip_addr_A_buff[offset]=HEXDIG(b); | 491 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(c); | 492 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(d); | 493 | 0 | _ip_addr_A_buff[offset+3]=0; | 494 | 0 | }else if(c){ | 495 | 0 | _ip_addr_A_buff[offset]=HEXDIG(c); | 496 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(d); | 497 | 0 | _ip_addr_A_buff[offset+2]=0; | 498 | 0 | }else{ | 499 | 0 | _ip_addr_A_buff[offset]=HEXDIG(d); | 500 | 0 | _ip_addr_A_buff[offset+1]=0; | 501 | 0 | } | 502 | 0 | break; | 503 | 20.8k | case AF_INET: | 504 | 83.2k | for(r=0;r<3;r++){ | 505 | 62.4k | a=ip->u.addr[r]/100; | 506 | 62.4k | c=ip->u.addr[r]%10; | 507 | 62.4k | b=ip->u.addr[r]%100/10; | 508 | 62.4k | if (a){ | 509 | 0 | _ip_addr_A_buff[offset]=a+'0'; | 510 | 0 | _ip_addr_A_buff[offset+1]=b+'0'; | 511 | 0 | _ip_addr_A_buff[offset+2]=c+'0'; | 512 | 0 | _ip_addr_A_buff[offset+3]='.'; | 513 | 0 | offset+=4; | 514 | 62.4k | }else if (b){ | 515 | 0 | _ip_addr_A_buff[offset]=b+'0'; | 516 | 0 | _ip_addr_A_buff[offset+1]=c+'0'; | 517 | 0 | _ip_addr_A_buff[offset+2]='.'; | 518 | 0 | offset+=3; | 519 | 62.4k | }else{ | 520 | 62.4k | _ip_addr_A_buff[offset]=c+'0'; | 521 | 62.4k | _ip_addr_A_buff[offset+1]='.'; | 522 | 62.4k | offset+=2; | 523 | 62.4k | } | 524 | 62.4k | } | 525 | | /* last number */ | 526 | 20.8k | a=ip->u.addr[r]/100; | 527 | 20.8k | c=ip->u.addr[r]%10; | 528 | 20.8k | b=ip->u.addr[r]%100/10; | 529 | 20.8k | if (a){ | 530 | 0 | _ip_addr_A_buff[offset]=a+'0'; | 531 | 0 | _ip_addr_A_buff[offset+1]=b+'0'; | 532 | 0 | _ip_addr_A_buff[offset+2]=c+'0'; | 533 | 0 | _ip_addr_A_buff[offset+3]=0; | 534 | 20.8k | }else if (b){ | 535 | 0 | _ip_addr_A_buff[offset]=b+'0'; | 536 | 0 | _ip_addr_A_buff[offset+1]=c+'0'; | 537 | 0 | _ip_addr_A_buff[offset+2]=0; | 538 | 20.8k | }else{ | 539 | 20.8k | _ip_addr_A_buff[offset]=c+'0'; | 540 | 20.8k | _ip_addr_A_buff[offset+1]=0; | 541 | 20.8k | } | 542 | 20.8k | break; | 543 | | | 544 | 0 | default: | 545 | 0 | LM_CRIT("unknown address family %d\n", ip->af); | 546 | 0 | _ip_addr_A_buff[0] = '\0'; | 547 | 20.8k | } | 548 | | | 549 | 20.8k | return _ip_addr_A_buff; | 550 | 20.8k | } |
Unexecuted instantiation: sr_module_deps.c:ip_addr2a Unexecuted instantiation: cfg_reload.c:ip_addr2a Unexecuted instantiation: socket_info.c:ip_addr2a Unexecuted instantiation: time_rec.c:ip_addr2a Unexecuted instantiation: data_lump.c:ip_addr2a Unexecuted instantiation: status_report.c:ip_addr2a Unexecuted instantiation: pt_scaling.c:ip_addr2a Unexecuted instantiation: name_alias.c:ip_addr2a Unexecuted instantiation: signals.c:ip_addr2a Unexecuted instantiation: flags.c:ip_addr2a Unexecuted instantiation: db_id.c:ip_addr2a Unexecuted instantiation: trans.c:ip_addr2a Unexecuted instantiation: sdp.c:ip_addr2a Unexecuted instantiation: sdp_helpr_funcs.c:ip_addr2a Unexecuted instantiation: digest_parser.c:ip_addr2a Unexecuted instantiation: param_parser.c:ip_addr2a Unexecuted instantiation: digest.c:ip_addr2a Unexecuted instantiation: parse_contact.c:ip_addr2a Unexecuted instantiation: parse_body.c:ip_addr2a Unexecuted instantiation: parse_security.c:ip_addr2a Unexecuted instantiation: parse_call_info.c:ip_addr2a Unexecuted instantiation: parse_event.c:ip_addr2a Unexecuted instantiation: parse_disposition.c:ip_addr2a Unexecuted instantiation: parse_authenticate.c:ip_addr2a Unexecuted instantiation: parser_f.c:ip_addr2a Unexecuted instantiation: parse_rpid.c:ip_addr2a Unexecuted instantiation: parse_ppi.c:ip_addr2a Unexecuted instantiation: parse_fcaps.c:ip_addr2a Unexecuted instantiation: parse_sst.c:ip_addr2a Unexecuted instantiation: parse_rr.c:ip_addr2a Unexecuted instantiation: parse_param.c:ip_addr2a Unexecuted instantiation: parse_diversion.c:ip_addr2a Unexecuted instantiation: parse_nameaddr.c:ip_addr2a Unexecuted instantiation: parse_expires.c:ip_addr2a Unexecuted instantiation: parse_refer_to.c:ip_addr2a Unexecuted instantiation: parse_from.c:ip_addr2a Unexecuted instantiation: parse_pai.c:ip_addr2a Unexecuted instantiation: evi_transport.c:ip_addr2a msg_translator.c:ip_addr2a Line | Count | Source | 431 | 10.4k | { | 432 | 10.4k | static unsigned int it = 0; | 433 | 10.4k | int offset; | 434 | 10.4k | register unsigned char a,b,c; | 435 | 10.4k | register unsigned char d; | 436 | 10.4k | register unsigned short hex4; | 437 | 10.4k | int r; | 438 | 10.4k | char *_ip_addr_A_buff; | 439 | 10.4k | #define HEXDIG(x) (((x)>=10)?(x)-10+'A':(x)+'0') | 440 | | | 441 | 10.4k | if ((++it)==IP_ADDR2STR_BUF_NO) it = 0; | 442 | 10.4k | _ip_addr_A_buff = _ip_addr_A_buffs[it]; | 443 | | | 444 | 10.4k | offset=0; | 445 | 10.4k | switch(ip->af){ | 446 | 0 | case AF_INET6: | 447 | 0 | for(r=0;r<7;r++){ | 448 | 0 | hex4=ntohs(ip->u.addr16[r]); | 449 | 0 | a=hex4>>12; | 450 | 0 | b=(hex4>>8)&0xf; | 451 | 0 | c=(hex4>>4)&0xf; | 452 | 0 | d=hex4&0xf; | 453 | 0 | if (a){ | 454 | 0 | _ip_addr_A_buff[offset]=HEXDIG(a); | 455 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(b); | 456 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(c); | 457 | 0 | _ip_addr_A_buff[offset+3]=HEXDIG(d); | 458 | 0 | _ip_addr_A_buff[offset+4]=':'; | 459 | 0 | offset+=5; | 460 | 0 | }else if(b){ | 461 | 0 | _ip_addr_A_buff[offset]=HEXDIG(b); | 462 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(c); | 463 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(d); | 464 | 0 | _ip_addr_A_buff[offset+3]=':'; | 465 | 0 | offset+=4; | 466 | 0 | }else if(c){ | 467 | 0 | _ip_addr_A_buff[offset]=HEXDIG(c); | 468 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(d); | 469 | 0 | _ip_addr_A_buff[offset+2]=':'; | 470 | 0 | offset+=3; | 471 | 0 | }else{ | 472 | 0 | _ip_addr_A_buff[offset]=HEXDIG(d); | 473 | 0 | _ip_addr_A_buff[offset+1]=':'; | 474 | 0 | offset+=2; | 475 | 0 | } | 476 | 0 | } | 477 | | /* last int16*/ | 478 | 0 | hex4=ntohs(ip->u.addr16[r]); | 479 | 0 | a=hex4>>12; | 480 | 0 | b=(hex4>>8)&0xf; | 481 | 0 | c=(hex4>>4)&0xf; | 482 | 0 | d=hex4&0xf; | 483 | 0 | if (a){ | 484 | 0 | _ip_addr_A_buff[offset]=HEXDIG(a); | 485 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(b); | 486 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(c); | 487 | 0 | _ip_addr_A_buff[offset+3]=HEXDIG(d); | 488 | 0 | _ip_addr_A_buff[offset+4]=0; | 489 | 0 | }else if(b){ | 490 | 0 | _ip_addr_A_buff[offset]=HEXDIG(b); | 491 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(c); | 492 | 0 | _ip_addr_A_buff[offset+2]=HEXDIG(d); | 493 | 0 | _ip_addr_A_buff[offset+3]=0; | 494 | 0 | }else if(c){ | 495 | 0 | _ip_addr_A_buff[offset]=HEXDIG(c); | 496 | 0 | _ip_addr_A_buff[offset+1]=HEXDIG(d); | 497 | 0 | _ip_addr_A_buff[offset+2]=0; | 498 | 0 | }else{ | 499 | 0 | _ip_addr_A_buff[offset]=HEXDIG(d); | 500 | 0 | _ip_addr_A_buff[offset+1]=0; | 501 | 0 | } | 502 | 0 | break; | 503 | 10.4k | case AF_INET: | 504 | 41.6k | for(r=0;r<3;r++){ | 505 | 31.2k | a=ip->u.addr[r]/100; | 506 | 31.2k | c=ip->u.addr[r]%10; | 507 | 31.2k | b=ip->u.addr[r]%100/10; | 508 | 31.2k | if (a){ | 509 | 0 | _ip_addr_A_buff[offset]=a+'0'; | 510 | 0 | _ip_addr_A_buff[offset+1]=b+'0'; | 511 | 0 | _ip_addr_A_buff[offset+2]=c+'0'; | 512 | 0 | _ip_addr_A_buff[offset+3]='.'; | 513 | 0 | offset+=4; | 514 | 31.2k | }else if (b){ | 515 | 0 | _ip_addr_A_buff[offset]=b+'0'; | 516 | 0 | _ip_addr_A_buff[offset+1]=c+'0'; | 517 | 0 | _ip_addr_A_buff[offset+2]='.'; | 518 | 0 | offset+=3; | 519 | 31.2k | }else{ | 520 | 31.2k | _ip_addr_A_buff[offset]=c+'0'; | 521 | 31.2k | _ip_addr_A_buff[offset+1]='.'; | 522 | 31.2k | offset+=2; | 523 | 31.2k | } | 524 | 31.2k | } | 525 | | /* last number */ | 526 | 10.4k | a=ip->u.addr[r]/100; | 527 | 10.4k | c=ip->u.addr[r]%10; | 528 | 10.4k | b=ip->u.addr[r]%100/10; | 529 | 10.4k | if (a){ | 530 | 0 | _ip_addr_A_buff[offset]=a+'0'; | 531 | 0 | _ip_addr_A_buff[offset+1]=b+'0'; | 532 | 0 | _ip_addr_A_buff[offset+2]=c+'0'; | 533 | 0 | _ip_addr_A_buff[offset+3]=0; | 534 | 10.4k | }else if (b){ | 535 | 0 | _ip_addr_A_buff[offset]=b+'0'; | 536 | 0 | _ip_addr_A_buff[offset+1]=c+'0'; | 537 | 0 | _ip_addr_A_buff[offset+2]=0; | 538 | 10.4k | }else{ | 539 | 10.4k | _ip_addr_A_buff[offset]=c+'0'; | 540 | 10.4k | _ip_addr_A_buff[offset+1]=0; | 541 | 10.4k | } | 542 | 10.4k | break; | 543 | | | 544 | 0 | default: | 545 | 0 | LM_CRIT("unknown address family %d\n", ip->af); | 546 | 0 | _ip_addr_A_buff[0] = '\0'; | 547 | 10.4k | } | 548 | | | 549 | 10.4k | return _ip_addr_A_buff; | 550 | 10.4k | } |
Unexecuted instantiation: md5utils.c:ip_addr2a Unexecuted instantiation: cfg.tab.c:ip_addr2a Unexecuted instantiation: modparam.c:ip_addr2a Unexecuted instantiation: crc.c:ip_addr2a Unexecuted instantiation: re.c:ip_addr2a Unexecuted instantiation: lex.yy.c:ip_addr2a Unexecuted instantiation: cfg_pp.c:ip_addr2a Unexecuted instantiation: proxy.c:ip_addr2a Unexecuted instantiation: shutdown.c:ip_addr2a Unexecuted instantiation: cmds.c:ip_addr2a Unexecuted instantiation: core_cmds.c:ip_addr2a Unexecuted instantiation: serialize.c:ip_addr2a Unexecuted instantiation: cachedb.c:ip_addr2a Unexecuted instantiation: cachedb_id.c:ip_addr2a Unexecuted instantiation: fuzz_uri_parser.c:ip_addr2a Unexecuted instantiation: fuzz_core_funcs.c:ip_addr2a Unexecuted instantiation: fuzz_msg_parser.c:ip_addr2a |
551 | | |
552 | | |
553 | | /*! \brief converts a str to an ipv4 address, returns the address or 0 on error |
554 | | Warning: the result is a pointer to a statically allocated structure */ |
555 | | static inline struct ip_addr* str2ip(str* st) |
556 | 5.25k | { |
557 | 5.25k | int i, j; |
558 | 5.25k | unsigned char *limit; |
559 | 5.25k | static struct ip_addr ip; |
560 | 5.25k | unsigned char *s; |
561 | | |
562 | 5.25k | if (st == NULL || st->s == NULL) goto error_null; |
563 | 5.25k | s=(unsigned char*)st->s; |
564 | | |
565 | | /*init*/ |
566 | 5.25k | ip.u.addr32[0]=0; |
567 | 5.25k | i=j=0; |
568 | 5.25k | limit=(unsigned char*)(st->s + st->len); |
569 | | |
570 | | /* first char must be different than '0' */ |
571 | 5.25k | if ((*s > '9' ) || (*s < '0')) goto error_char; |
572 | 873 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; |
573 | 873 | s++; |
574 | 873 | j++; |
575 | 989 | for(;s<limit ;s++){ |
576 | 158 | if (*s=='.'){ |
577 | 42 | i++; |
578 | 42 | j=0; |
579 | 42 | if (i>3) goto error_dots; |
580 | 41 | s++; |
581 | 41 | if (s==limit) break; |
582 | 40 | if ( (*s <= '9' ) && (*s >= '0') ){ |
583 | 37 | j++; |
584 | 37 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; |
585 | 37 | } else { |
586 | 3 | goto error_char; |
587 | 3 | } |
588 | 116 | }else if ( (j==1) && (*s <= '9' ) && (*s >= '0') ){ |
589 | | /* if first char is '0' then fail conversion */ |
590 | 55 | if (ip.u.addr[i]==0) goto error_char; |
591 | 54 | j++; |
592 | 54 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; |
593 | 61 | }else if ( (j==2) && (*s <= '9' ) && (*s >= '0') ){ |
594 | | /* if first two chars are bigger then '25' then fail conversion */ |
595 | 31 | if (ip.u.addr[i]>25) goto error_char; |
596 | | /* if first three chars are bigger then '255' then fail conversion */ |
597 | 25 | if (ip.u.addr[i]==25 && *s > '5') goto error_char; |
598 | 25 | j++; |
599 | 25 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; |
600 | 30 | }else{ |
601 | | //error unknown char |
602 | 30 | goto error_char; |
603 | 30 | } |
604 | 158 | } |
605 | 832 | if (i<3) goto error_dots; |
606 | 7 | ip.af=AF_INET; |
607 | 7 | ip.len=4; |
608 | | |
609 | 7 | return &ip; |
610 | 1 | error_null: |
611 | 1 | LM_DBG("Null pointer detected\n"); |
612 | 1 | return NULL; |
613 | 826 | error_dots: |
614 | 826 | LM_DBG("too %s dots in [%.*s]\n", (i>3)?"many":"few", |
615 | 826 | st->len, st->s); |
616 | 826 | return NULL; |
617 | 4.42k | error_char: |
618 | | /* |
619 | | LM_ERR("unexpected char [%p]->[%c] in [%p]->[%.*s] while i=[%d] j=[%d]\n", |
620 | | s, *s, st->s, st->len, st->s, i, j); |
621 | | */ |
622 | 4.42k | return NULL; |
623 | 832 | } Unexecuted instantiation: fuzz_csv_parser.c:str2ip Unexecuted instantiation: csv.c:str2ip Unexecuted instantiation: dprint.c:str2ip Unexecuted instantiation: pt.c:str2ip Unexecuted instantiation: ut.c:str2ip Unexecuted instantiation: statistics.c:str2ip Unexecuted instantiation: route.c:str2ip Unexecuted instantiation: globals.c:str2ip Unexecuted instantiation: ipc.c:str2ip Unexecuted instantiation: core_stats.c:str2ip Unexecuted instantiation: route_struct.c:str2ip Unexecuted instantiation: dset.c:str2ip Unexecuted instantiation: pt_load.c:str2ip Unexecuted instantiation: sr_module.c:str2ip Unexecuted instantiation: action.c:str2ip Unexecuted instantiation: db_insertq.c:str2ip Unexecuted instantiation: db.c:str2ip Unexecuted instantiation: proto_tcp.c:str2ip Unexecuted instantiation: proto_udp.c:str2ip Unexecuted instantiation: net_tcp_proc.c:str2ip Unexecuted instantiation: proxy_protocol.c:str2ip Unexecuted instantiation: net_tcp.c:str2ip Unexecuted instantiation: tcp_common.c:str2ip Unexecuted instantiation: net_udp.c:str2ip Unexecuted instantiation: tcp_conn_profile.c:str2ip Unexecuted instantiation: trans_trace.c:str2ip Unexecuted instantiation: net_tcp_report.c:str2ip Unexecuted instantiation: shm_mem.c:str2ip Unexecuted instantiation: mi.c:str2ip Unexecuted instantiation: item.c:str2ip Unexecuted instantiation: msg_parser.c:str2ip Unexecuted instantiation: parse_uri.c:str2ip Unexecuted instantiation: parse_fline.c:str2ip Unexecuted instantiation: parse_methods.c:str2ip Unexecuted instantiation: parse_hname2.c:str2ip Unexecuted instantiation: parse_content.c:str2ip Unexecuted instantiation: hf.c:str2ip Unexecuted instantiation: parse_to.c:str2ip Unexecuted instantiation: parse_via.c:str2ip Unexecuted instantiation: event_interface.c:str2ip Unexecuted instantiation: receive.c:str2ip Unexecuted instantiation: error.c:str2ip Unexecuted instantiation: script_cb.c:str2ip Unexecuted instantiation: ip_addr.c:str2ip Unexecuted instantiation: data_lump_rpl.c:str2ip Unexecuted instantiation: async.c:str2ip Unexecuted instantiation: daemonize.c:str2ip Unexecuted instantiation: timer.c:str2ip Unexecuted instantiation: trace_api.c:str2ip Unexecuted instantiation: mod_fix.c:str2ip Unexecuted instantiation: reactor.c:str2ip Unexecuted instantiation: strcommon.c:str2ip Unexecuted instantiation: forward.c:str2ip Unexecuted instantiation: xlog.c:str2ip Unexecuted instantiation: blacklists.c:str2ip Unexecuted instantiation: msg_callbacks.c:str2ip Unexecuted instantiation: usr_avp.c:str2ip Unexecuted instantiation: sl_cb.c:str2ip Unexecuted instantiation: sdp_ops.c:str2ip Line | Count | Source | 556 | 5.25k | { | 557 | 5.25k | int i, j; | 558 | 5.25k | unsigned char *limit; | 559 | 5.25k | static struct ip_addr ip; | 560 | 5.25k | unsigned char *s; | 561 | | | 562 | 5.25k | if (st == NULL || st->s == NULL) goto error_null; | 563 | 5.25k | s=(unsigned char*)st->s; | 564 | | | 565 | | /*init*/ | 566 | 5.25k | ip.u.addr32[0]=0; | 567 | 5.25k | i=j=0; | 568 | 5.25k | limit=(unsigned char*)(st->s + st->len); | 569 | | | 570 | | /* first char must be different than '0' */ | 571 | 5.25k | if ((*s > '9' ) || (*s < '0')) goto error_char; | 572 | 873 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; | 573 | 873 | s++; | 574 | 873 | j++; | 575 | 989 | for(;s<limit ;s++){ | 576 | 158 | if (*s=='.'){ | 577 | 42 | i++; | 578 | 42 | j=0; | 579 | 42 | if (i>3) goto error_dots; | 580 | 41 | s++; | 581 | 41 | if (s==limit) break; | 582 | 40 | if ( (*s <= '9' ) && (*s >= '0') ){ | 583 | 37 | j++; | 584 | 37 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; | 585 | 37 | } else { | 586 | 3 | goto error_char; | 587 | 3 | } | 588 | 116 | }else if ( (j==1) && (*s <= '9' ) && (*s >= '0') ){ | 589 | | /* if first char is '0' then fail conversion */ | 590 | 55 | if (ip.u.addr[i]==0) goto error_char; | 591 | 54 | j++; | 592 | 54 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; | 593 | 61 | }else if ( (j==2) && (*s <= '9' ) && (*s >= '0') ){ | 594 | | /* if first two chars are bigger then '25' then fail conversion */ | 595 | 31 | if (ip.u.addr[i]>25) goto error_char; | 596 | | /* if first three chars are bigger then '255' then fail conversion */ | 597 | 25 | if (ip.u.addr[i]==25 && *s > '5') goto error_char; | 598 | 25 | j++; | 599 | 25 | ip.u.addr[i]=ip.u.addr[i]*10+*s-'0'; | 600 | 30 | }else{ | 601 | | //error unknown char | 602 | 30 | goto error_char; | 603 | 30 | } | 604 | 158 | } | 605 | 832 | if (i<3) goto error_dots; | 606 | 7 | ip.af=AF_INET; | 607 | 7 | ip.len=4; | 608 | | | 609 | 7 | return &ip; | 610 | 1 | error_null: | 611 | 1 | LM_DBG("Null pointer detected\n"); | 612 | 1 | return NULL; | 613 | 826 | error_dots: | 614 | 826 | LM_DBG("too %s dots in [%.*s]\n", (i>3)?"many":"few", | 615 | 826 | st->len, st->s); | 616 | 826 | return NULL; | 617 | 4.42k | error_char: | 618 | | /* | 619 | | LM_ERR("unexpected char [%p]->[%c] in [%p]->[%.*s] while i=[%d] j=[%d]\n", | 620 | | s, *s, st->s, st->len, st->s, i, j); | 621 | | */ | 622 | | return NULL; | 623 | 832 | } |
Unexecuted instantiation: io_wait.c:str2ip Unexecuted instantiation: transformations.c:str2ip Unexecuted instantiation: pvar.c:str2ip Unexecuted instantiation: sr_module_deps.c:str2ip Unexecuted instantiation: cfg_reload.c:str2ip Unexecuted instantiation: socket_info.c:str2ip Unexecuted instantiation: time_rec.c:str2ip Unexecuted instantiation: data_lump.c:str2ip Unexecuted instantiation: status_report.c:str2ip Unexecuted instantiation: pt_scaling.c:str2ip Unexecuted instantiation: name_alias.c:str2ip Unexecuted instantiation: signals.c:str2ip Unexecuted instantiation: flags.c:str2ip Unexecuted instantiation: db_id.c:str2ip Unexecuted instantiation: trans.c:str2ip Unexecuted instantiation: sdp.c:str2ip Unexecuted instantiation: sdp_helpr_funcs.c:str2ip Unexecuted instantiation: digest_parser.c:str2ip Unexecuted instantiation: param_parser.c:str2ip Unexecuted instantiation: digest.c:str2ip Unexecuted instantiation: parse_contact.c:str2ip Unexecuted instantiation: parse_body.c:str2ip Unexecuted instantiation: parse_security.c:str2ip Unexecuted instantiation: parse_call_info.c:str2ip Unexecuted instantiation: parse_event.c:str2ip Unexecuted instantiation: parse_disposition.c:str2ip Unexecuted instantiation: parse_authenticate.c:str2ip Unexecuted instantiation: parser_f.c:str2ip Unexecuted instantiation: parse_rpid.c:str2ip Unexecuted instantiation: parse_ppi.c:str2ip Unexecuted instantiation: parse_fcaps.c:str2ip Unexecuted instantiation: parse_sst.c:str2ip Unexecuted instantiation: parse_rr.c:str2ip Unexecuted instantiation: parse_param.c:str2ip Unexecuted instantiation: parse_diversion.c:str2ip Unexecuted instantiation: parse_nameaddr.c:str2ip Unexecuted instantiation: parse_expires.c:str2ip Unexecuted instantiation: parse_refer_to.c:str2ip Unexecuted instantiation: parse_from.c:str2ip Unexecuted instantiation: parse_pai.c:str2ip Unexecuted instantiation: evi_transport.c:str2ip Unexecuted instantiation: msg_translator.c:str2ip Unexecuted instantiation: md5utils.c:str2ip Unexecuted instantiation: cfg.tab.c:str2ip Unexecuted instantiation: modparam.c:str2ip Unexecuted instantiation: crc.c:str2ip Unexecuted instantiation: re.c:str2ip Unexecuted instantiation: lex.yy.c:str2ip Unexecuted instantiation: cfg_pp.c:str2ip Unexecuted instantiation: proxy.c:str2ip Unexecuted instantiation: shutdown.c:str2ip Unexecuted instantiation: cmds.c:str2ip Unexecuted instantiation: core_cmds.c:str2ip Unexecuted instantiation: serialize.c:str2ip Unexecuted instantiation: cachedb.c:str2ip Unexecuted instantiation: cachedb_id.c:str2ip Unexecuted instantiation: fuzz_uri_parser.c:str2ip Unexecuted instantiation: fuzz_core_funcs.c:str2ip Unexecuted instantiation: fuzz_msg_parser.c:str2ip |
624 | | |
625 | | |
626 | | /*! \brief returns an ip_addr struct.; on error returns 0 |
627 | | * the ip_addr struct is static, so subsequent calls will destroy its content*/ |
628 | | static inline struct ip_addr* str2ip6(str* st) |
629 | 5.25k | { |
630 | 5.25k | int i, idx1, rest; |
631 | 5.25k | int no_colons; |
632 | 5.25k | int double_colon; |
633 | 5.25k | int hex; |
634 | 5.25k | static struct ip_addr ip; |
635 | 5.25k | unsigned short* addr_start; |
636 | 5.25k | unsigned short addr_end[8]; |
637 | 5.25k | unsigned short* addr; |
638 | 5.25k | unsigned char* limit; |
639 | 5.25k | unsigned char* s; |
640 | | |
641 | 5.25k | if (st == NULL || st->s == NULL) goto error_char; |
642 | | /* init */ |
643 | 5.25k | if ((st->len) && (st->s[0]=='[')){ |
644 | | /* skip over [ ] */ |
645 | 18 | if (st->s[st->len-1]!=']') goto error_char; |
646 | 9 | s=(unsigned char*)(st->s+1); |
647 | 9 | limit=(unsigned char*)(st->s+st->len-1); |
648 | 5.23k | }else{ |
649 | 5.23k | s=(unsigned char*)st->s; |
650 | 5.23k | limit=(unsigned char*)(st->s+st->len); |
651 | 5.23k | } |
652 | 5.24k | i=idx1=rest=0; |
653 | 5.24k | double_colon=0; |
654 | 5.24k | no_colons=0; |
655 | 5.24k | ip.af=AF_INET6; |
656 | 5.24k | ip.len=16; |
657 | 5.24k | addr_start=ip.u.addr16; |
658 | 5.24k | addr=addr_start; |
659 | 5.24k | memset(addr_start, 0 , 8*sizeof(unsigned short)); |
660 | 5.24k | memset(addr_end, 0 , 8*sizeof(unsigned short)); |
661 | 6.71k | for (; s<limit; s++){ |
662 | 2.21k | if (*s==':'){ |
663 | 33 | no_colons++; |
664 | 33 | if (no_colons>7) goto error_too_many_colons; |
665 | 32 | if (double_colon){ |
666 | 8 | idx1=i; |
667 | 8 | i=0; |
668 | 8 | if (addr==addr_end) goto error_colons; |
669 | 6 | addr=addr_end; |
670 | 24 | }else{ |
671 | 24 | double_colon=1; |
672 | 24 | addr[i]=htons(addr[i]); |
673 | 24 | i++; |
674 | 24 | } |
675 | 2.18k | }else if ((hex=HEX2I(*s))>=0){ |
676 | 1.44k | addr[i]=addr[i]*16+hex; |
677 | 1.44k | double_colon=0; |
678 | 1.44k | }else{ |
679 | | /* error, unknown char */ |
680 | 741 | goto error_char; |
681 | 741 | } |
682 | 2.21k | } |
683 | 4.49k | if (!double_colon){ /* not ending in ':' */ |
684 | 4.49k | addr[i]=htons(addr[i]); |
685 | 4.49k | i++; |
686 | 4.49k | } |
687 | | /* if address contained '::' fix it */ |
688 | 4.49k | if (addr==addr_end){ |
689 | 3 | rest=8-i-idx1; |
690 | 3 | memcpy(addr_start+idx1+rest, addr_end, i*sizeof(unsigned short)); |
691 | 4.49k | }else{ |
692 | | /* no double colons inside */ |
693 | 4.49k | if (no_colons<7) goto error_too_few_colons; |
694 | 4.49k | } |
695 | | /* |
696 | | DBG("str2ip6: idx1=%d, rest=%d, no_colons=%d, hex=%x\n", |
697 | | idx1, rest, no_colons, hex); |
698 | | DBG("str2ip6: address %x:%x:%x:%x:%x:%x:%x:%x\n", |
699 | | addr_start[0], addr_start[1], addr_start[2], |
700 | | addr_start[3], addr_start[4], addr_start[5], |
701 | | addr_start[6], addr_start[7] ); |
702 | | */ |
703 | 3 | return &ip; |
704 | | |
705 | 1 | error_too_many_colons: |
706 | 1 | LM_DBG("too many colons in [%.*s]\n", st->len, st->s); |
707 | 1 | return 0; |
708 | | |
709 | 4.49k | error_too_few_colons: |
710 | 4.49k | LM_DBG("too few colons in [%.*s]\n", st->len, st->s); |
711 | 4.49k | return 0; |
712 | | |
713 | 2 | error_colons: |
714 | 2 | LM_DBG("too many double colons in [%.*s]\n", st->len, st->s); |
715 | 2 | return 0; |
716 | | |
717 | 751 | error_char: |
718 | | /* |
719 | | DBG("str2ip6: WARNING: unexpected char %c in [%.*s]\n", *s, st->len, |
720 | | st->s);*/ |
721 | 751 | return 0; |
722 | 4.49k | } Unexecuted instantiation: fuzz_csv_parser.c:str2ip6 Unexecuted instantiation: csv.c:str2ip6 Unexecuted instantiation: dprint.c:str2ip6 Unexecuted instantiation: pt.c:str2ip6 Unexecuted instantiation: ut.c:str2ip6 Unexecuted instantiation: statistics.c:str2ip6 Unexecuted instantiation: route.c:str2ip6 Unexecuted instantiation: globals.c:str2ip6 Unexecuted instantiation: ipc.c:str2ip6 Unexecuted instantiation: core_stats.c:str2ip6 Unexecuted instantiation: route_struct.c:str2ip6 Unexecuted instantiation: dset.c:str2ip6 Unexecuted instantiation: pt_load.c:str2ip6 Unexecuted instantiation: sr_module.c:str2ip6 Unexecuted instantiation: action.c:str2ip6 Unexecuted instantiation: db_insertq.c:str2ip6 Unexecuted instantiation: db.c:str2ip6 Unexecuted instantiation: proto_tcp.c:str2ip6 Unexecuted instantiation: proto_udp.c:str2ip6 Unexecuted instantiation: net_tcp_proc.c:str2ip6 Unexecuted instantiation: proxy_protocol.c:str2ip6 Unexecuted instantiation: net_tcp.c:str2ip6 Unexecuted instantiation: tcp_common.c:str2ip6 Unexecuted instantiation: net_udp.c:str2ip6 Unexecuted instantiation: tcp_conn_profile.c:str2ip6 Unexecuted instantiation: trans_trace.c:str2ip6 Unexecuted instantiation: net_tcp_report.c:str2ip6 Unexecuted instantiation: shm_mem.c:str2ip6 Unexecuted instantiation: mi.c:str2ip6 Unexecuted instantiation: item.c:str2ip6 Unexecuted instantiation: msg_parser.c:str2ip6 Unexecuted instantiation: parse_uri.c:str2ip6 Unexecuted instantiation: parse_fline.c:str2ip6 Unexecuted instantiation: parse_methods.c:str2ip6 Unexecuted instantiation: parse_hname2.c:str2ip6 Unexecuted instantiation: parse_content.c:str2ip6 Unexecuted instantiation: hf.c:str2ip6 Unexecuted instantiation: parse_to.c:str2ip6 Unexecuted instantiation: parse_via.c:str2ip6 Unexecuted instantiation: event_interface.c:str2ip6 Unexecuted instantiation: receive.c:str2ip6 Unexecuted instantiation: error.c:str2ip6 Unexecuted instantiation: script_cb.c:str2ip6 Unexecuted instantiation: ip_addr.c:str2ip6 Unexecuted instantiation: data_lump_rpl.c:str2ip6 Unexecuted instantiation: async.c:str2ip6 Unexecuted instantiation: daemonize.c:str2ip6 Unexecuted instantiation: timer.c:str2ip6 Unexecuted instantiation: trace_api.c:str2ip6 Unexecuted instantiation: mod_fix.c:str2ip6 Unexecuted instantiation: reactor.c:str2ip6 Unexecuted instantiation: strcommon.c:str2ip6 Unexecuted instantiation: forward.c:str2ip6 Unexecuted instantiation: xlog.c:str2ip6 Unexecuted instantiation: blacklists.c:str2ip6 Unexecuted instantiation: msg_callbacks.c:str2ip6 Unexecuted instantiation: usr_avp.c:str2ip6 Unexecuted instantiation: sl_cb.c:str2ip6 Unexecuted instantiation: sdp_ops.c:str2ip6 Line | Count | Source | 629 | 5.25k | { | 630 | 5.25k | int i, idx1, rest; | 631 | 5.25k | int no_colons; | 632 | 5.25k | int double_colon; | 633 | 5.25k | int hex; | 634 | 5.25k | static struct ip_addr ip; | 635 | 5.25k | unsigned short* addr_start; | 636 | 5.25k | unsigned short addr_end[8]; | 637 | 5.25k | unsigned short* addr; | 638 | 5.25k | unsigned char* limit; | 639 | 5.25k | unsigned char* s; | 640 | | | 641 | 5.25k | if (st == NULL || st->s == NULL) goto error_char; | 642 | | /* init */ | 643 | 5.25k | if ((st->len) && (st->s[0]=='[')){ | 644 | | /* skip over [ ] */ | 645 | 18 | if (st->s[st->len-1]!=']') goto error_char; | 646 | 9 | s=(unsigned char*)(st->s+1); | 647 | 9 | limit=(unsigned char*)(st->s+st->len-1); | 648 | 5.23k | }else{ | 649 | 5.23k | s=(unsigned char*)st->s; | 650 | 5.23k | limit=(unsigned char*)(st->s+st->len); | 651 | 5.23k | } | 652 | 5.24k | i=idx1=rest=0; | 653 | 5.24k | double_colon=0; | 654 | 5.24k | no_colons=0; | 655 | 5.24k | ip.af=AF_INET6; | 656 | 5.24k | ip.len=16; | 657 | 5.24k | addr_start=ip.u.addr16; | 658 | 5.24k | addr=addr_start; | 659 | 5.24k | memset(addr_start, 0 , 8*sizeof(unsigned short)); | 660 | 5.24k | memset(addr_end, 0 , 8*sizeof(unsigned short)); | 661 | 6.71k | for (; s<limit; s++){ | 662 | 2.21k | if (*s==':'){ | 663 | 33 | no_colons++; | 664 | 33 | if (no_colons>7) goto error_too_many_colons; | 665 | 32 | if (double_colon){ | 666 | 8 | idx1=i; | 667 | 8 | i=0; | 668 | 8 | if (addr==addr_end) goto error_colons; | 669 | 6 | addr=addr_end; | 670 | 24 | }else{ | 671 | 24 | double_colon=1; | 672 | 24 | addr[i]=htons(addr[i]); | 673 | 24 | i++; | 674 | 24 | } | 675 | 2.18k | }else if ((hex=HEX2I(*s))>=0){ | 676 | 1.44k | addr[i]=addr[i]*16+hex; | 677 | 1.44k | double_colon=0; | 678 | 1.44k | }else{ | 679 | | /* error, unknown char */ | 680 | 741 | goto error_char; | 681 | 741 | } | 682 | 2.21k | } | 683 | 4.49k | if (!double_colon){ /* not ending in ':' */ | 684 | 4.49k | addr[i]=htons(addr[i]); | 685 | 4.49k | i++; | 686 | 4.49k | } | 687 | | /* if address contained '::' fix it */ | 688 | 4.49k | if (addr==addr_end){ | 689 | 3 | rest=8-i-idx1; | 690 | 3 | memcpy(addr_start+idx1+rest, addr_end, i*sizeof(unsigned short)); | 691 | 4.49k | }else{ | 692 | | /* no double colons inside */ | 693 | 4.49k | if (no_colons<7) goto error_too_few_colons; | 694 | 4.49k | } | 695 | | /* | 696 | | DBG("str2ip6: idx1=%d, rest=%d, no_colons=%d, hex=%x\n", | 697 | | idx1, rest, no_colons, hex); | 698 | | DBG("str2ip6: address %x:%x:%x:%x:%x:%x:%x:%x\n", | 699 | | addr_start[0], addr_start[1], addr_start[2], | 700 | | addr_start[3], addr_start[4], addr_start[5], | 701 | | addr_start[6], addr_start[7] ); | 702 | | */ | 703 | 3 | return &ip; | 704 | | | 705 | 1 | error_too_many_colons: | 706 | 1 | LM_DBG("too many colons in [%.*s]\n", st->len, st->s); | 707 | 1 | return 0; | 708 | | | 709 | 4.49k | error_too_few_colons: | 710 | 4.49k | LM_DBG("too few colons in [%.*s]\n", st->len, st->s); | 711 | 4.49k | return 0; | 712 | | | 713 | 2 | error_colons: | 714 | 2 | LM_DBG("too many double colons in [%.*s]\n", st->len, st->s); | 715 | 2 | return 0; | 716 | | | 717 | 751 | error_char: | 718 | | /* | 719 | | DBG("str2ip6: WARNING: unexpected char %c in [%.*s]\n", *s, st->len, | 720 | | st->s);*/ | 721 | 751 | return 0; | 722 | 4.49k | } |
Unexecuted instantiation: io_wait.c:str2ip6 Unexecuted instantiation: transformations.c:str2ip6 Unexecuted instantiation: pvar.c:str2ip6 Unexecuted instantiation: sr_module_deps.c:str2ip6 Unexecuted instantiation: cfg_reload.c:str2ip6 Unexecuted instantiation: socket_info.c:str2ip6 Unexecuted instantiation: time_rec.c:str2ip6 Unexecuted instantiation: data_lump.c:str2ip6 Unexecuted instantiation: status_report.c:str2ip6 Unexecuted instantiation: pt_scaling.c:str2ip6 Unexecuted instantiation: name_alias.c:str2ip6 Unexecuted instantiation: signals.c:str2ip6 Unexecuted instantiation: flags.c:str2ip6 Unexecuted instantiation: db_id.c:str2ip6 Unexecuted instantiation: trans.c:str2ip6 Unexecuted instantiation: sdp.c:str2ip6 Unexecuted instantiation: sdp_helpr_funcs.c:str2ip6 Unexecuted instantiation: digest_parser.c:str2ip6 Unexecuted instantiation: param_parser.c:str2ip6 Unexecuted instantiation: digest.c:str2ip6 Unexecuted instantiation: parse_contact.c:str2ip6 Unexecuted instantiation: parse_body.c:str2ip6 Unexecuted instantiation: parse_security.c:str2ip6 Unexecuted instantiation: parse_call_info.c:str2ip6 Unexecuted instantiation: parse_event.c:str2ip6 Unexecuted instantiation: parse_disposition.c:str2ip6 Unexecuted instantiation: parse_authenticate.c:str2ip6 Unexecuted instantiation: parser_f.c:str2ip6 Unexecuted instantiation: parse_rpid.c:str2ip6 Unexecuted instantiation: parse_ppi.c:str2ip6 Unexecuted instantiation: parse_fcaps.c:str2ip6 Unexecuted instantiation: parse_sst.c:str2ip6 Unexecuted instantiation: parse_rr.c:str2ip6 Unexecuted instantiation: parse_param.c:str2ip6 Unexecuted instantiation: parse_diversion.c:str2ip6 Unexecuted instantiation: parse_nameaddr.c:str2ip6 Unexecuted instantiation: parse_expires.c:str2ip6 Unexecuted instantiation: parse_refer_to.c:str2ip6 Unexecuted instantiation: parse_from.c:str2ip6 Unexecuted instantiation: parse_pai.c:str2ip6 Unexecuted instantiation: evi_transport.c:str2ip6 Unexecuted instantiation: msg_translator.c:str2ip6 Unexecuted instantiation: md5utils.c:str2ip6 Unexecuted instantiation: cfg.tab.c:str2ip6 Unexecuted instantiation: modparam.c:str2ip6 Unexecuted instantiation: crc.c:str2ip6 Unexecuted instantiation: re.c:str2ip6 Unexecuted instantiation: lex.yy.c:str2ip6 Unexecuted instantiation: cfg_pp.c:str2ip6 Unexecuted instantiation: proxy.c:str2ip6 Unexecuted instantiation: shutdown.c:str2ip6 Unexecuted instantiation: cmds.c:str2ip6 Unexecuted instantiation: core_cmds.c:str2ip6 Unexecuted instantiation: serialize.c:str2ip6 Unexecuted instantiation: cachedb.c:str2ip6 Unexecuted instantiation: cachedb_id.c:str2ip6 Unexecuted instantiation: fuzz_uri_parser.c:str2ip6 Unexecuted instantiation: fuzz_core_funcs.c:str2ip6 Unexecuted instantiation: fuzz_msg_parser.c:str2ip6 |
723 | | |
724 | | |
725 | | /*! \brief converts an ip_addr structure to a hostent |
726 | | * \return pointer to internal statical structure */ |
727 | | static inline struct hostent* ip_addr2he(str* name, struct ip_addr* ip) |
728 | 0 | { |
729 | 0 | static struct hostent he; |
730 | 0 | static char hostname[256]; |
731 | 0 | static char* p_aliases[1]; |
732 | 0 | static char* p_addr[2]; |
733 | 0 | static char address[16]; |
734 | 0 | int len; |
735 | |
|
736 | 0 | p_aliases[0]=0; /* no aliases*/ |
737 | 0 | p_addr[1]=0; /* only one address*/ |
738 | 0 | p_addr[0]=address; |
739 | 0 | len = (name->len < 255) ? name->len : 255; |
740 | 0 | strncpy(hostname, name->s, len); |
741 | 0 | hostname[len] = 0; |
742 | 0 | if (ip->len>16) return 0; |
743 | 0 | memcpy(address, ip->u.addr, ip->len); |
744 | |
|
745 | 0 | he.h_addrtype=ip->af; |
746 | 0 | he.h_length=ip->len; |
747 | 0 | he.h_addr_list=p_addr; |
748 | 0 | he.h_aliases=p_aliases; |
749 | 0 | he.h_name=hostname; |
750 | 0 | return &he; |
751 | 0 | } Unexecuted instantiation: fuzz_csv_parser.c:ip_addr2he Unexecuted instantiation: csv.c:ip_addr2he Unexecuted instantiation: dprint.c:ip_addr2he Unexecuted instantiation: pt.c:ip_addr2he Unexecuted instantiation: ut.c:ip_addr2he Unexecuted instantiation: statistics.c:ip_addr2he Unexecuted instantiation: route.c:ip_addr2he Unexecuted instantiation: globals.c:ip_addr2he Unexecuted instantiation: ipc.c:ip_addr2he Unexecuted instantiation: core_stats.c:ip_addr2he Unexecuted instantiation: route_struct.c:ip_addr2he Unexecuted instantiation: dset.c:ip_addr2he Unexecuted instantiation: pt_load.c:ip_addr2he Unexecuted instantiation: sr_module.c:ip_addr2he Unexecuted instantiation: action.c:ip_addr2he Unexecuted instantiation: db_insertq.c:ip_addr2he Unexecuted instantiation: db.c:ip_addr2he Unexecuted instantiation: proto_tcp.c:ip_addr2he Unexecuted instantiation: proto_udp.c:ip_addr2he Unexecuted instantiation: net_tcp_proc.c:ip_addr2he Unexecuted instantiation: proxy_protocol.c:ip_addr2he Unexecuted instantiation: net_tcp.c:ip_addr2he Unexecuted instantiation: tcp_common.c:ip_addr2he Unexecuted instantiation: net_udp.c:ip_addr2he Unexecuted instantiation: tcp_conn_profile.c:ip_addr2he Unexecuted instantiation: trans_trace.c:ip_addr2he Unexecuted instantiation: net_tcp_report.c:ip_addr2he Unexecuted instantiation: shm_mem.c:ip_addr2he Unexecuted instantiation: mi.c:ip_addr2he Unexecuted instantiation: item.c:ip_addr2he Unexecuted instantiation: msg_parser.c:ip_addr2he Unexecuted instantiation: parse_uri.c:ip_addr2he Unexecuted instantiation: parse_fline.c:ip_addr2he Unexecuted instantiation: parse_methods.c:ip_addr2he Unexecuted instantiation: parse_hname2.c:ip_addr2he Unexecuted instantiation: parse_content.c:ip_addr2he Unexecuted instantiation: hf.c:ip_addr2he Unexecuted instantiation: parse_to.c:ip_addr2he Unexecuted instantiation: parse_via.c:ip_addr2he Unexecuted instantiation: event_interface.c:ip_addr2he Unexecuted instantiation: receive.c:ip_addr2he Unexecuted instantiation: error.c:ip_addr2he Unexecuted instantiation: script_cb.c:ip_addr2he Unexecuted instantiation: ip_addr.c:ip_addr2he Unexecuted instantiation: data_lump_rpl.c:ip_addr2he Unexecuted instantiation: async.c:ip_addr2he Unexecuted instantiation: daemonize.c:ip_addr2he Unexecuted instantiation: timer.c:ip_addr2he Unexecuted instantiation: trace_api.c:ip_addr2he Unexecuted instantiation: mod_fix.c:ip_addr2he Unexecuted instantiation: reactor.c:ip_addr2he Unexecuted instantiation: strcommon.c:ip_addr2he Unexecuted instantiation: forward.c:ip_addr2he Unexecuted instantiation: xlog.c:ip_addr2he Unexecuted instantiation: blacklists.c:ip_addr2he Unexecuted instantiation: msg_callbacks.c:ip_addr2he Unexecuted instantiation: usr_avp.c:ip_addr2he Unexecuted instantiation: sl_cb.c:ip_addr2he Unexecuted instantiation: sdp_ops.c:ip_addr2he Unexecuted instantiation: resolve.c:ip_addr2he Unexecuted instantiation: io_wait.c:ip_addr2he Unexecuted instantiation: transformations.c:ip_addr2he Unexecuted instantiation: pvar.c:ip_addr2he Unexecuted instantiation: sr_module_deps.c:ip_addr2he Unexecuted instantiation: cfg_reload.c:ip_addr2he Unexecuted instantiation: socket_info.c:ip_addr2he Unexecuted instantiation: time_rec.c:ip_addr2he Unexecuted instantiation: data_lump.c:ip_addr2he Unexecuted instantiation: status_report.c:ip_addr2he Unexecuted instantiation: pt_scaling.c:ip_addr2he Unexecuted instantiation: name_alias.c:ip_addr2he Unexecuted instantiation: signals.c:ip_addr2he Unexecuted instantiation: flags.c:ip_addr2he Unexecuted instantiation: db_id.c:ip_addr2he Unexecuted instantiation: trans.c:ip_addr2he Unexecuted instantiation: sdp.c:ip_addr2he Unexecuted instantiation: sdp_helpr_funcs.c:ip_addr2he Unexecuted instantiation: digest_parser.c:ip_addr2he Unexecuted instantiation: param_parser.c:ip_addr2he Unexecuted instantiation: digest.c:ip_addr2he Unexecuted instantiation: parse_contact.c:ip_addr2he Unexecuted instantiation: parse_body.c:ip_addr2he Unexecuted instantiation: parse_security.c:ip_addr2he Unexecuted instantiation: parse_call_info.c:ip_addr2he Unexecuted instantiation: parse_event.c:ip_addr2he Unexecuted instantiation: parse_disposition.c:ip_addr2he Unexecuted instantiation: parse_authenticate.c:ip_addr2he Unexecuted instantiation: parser_f.c:ip_addr2he Unexecuted instantiation: parse_rpid.c:ip_addr2he Unexecuted instantiation: parse_ppi.c:ip_addr2he Unexecuted instantiation: parse_fcaps.c:ip_addr2he Unexecuted instantiation: parse_sst.c:ip_addr2he Unexecuted instantiation: parse_rr.c:ip_addr2he Unexecuted instantiation: parse_param.c:ip_addr2he Unexecuted instantiation: parse_diversion.c:ip_addr2he Unexecuted instantiation: parse_nameaddr.c:ip_addr2he Unexecuted instantiation: parse_expires.c:ip_addr2he Unexecuted instantiation: parse_refer_to.c:ip_addr2he Unexecuted instantiation: parse_from.c:ip_addr2he Unexecuted instantiation: parse_pai.c:ip_addr2he Unexecuted instantiation: evi_transport.c:ip_addr2he Unexecuted instantiation: msg_translator.c:ip_addr2he Unexecuted instantiation: md5utils.c:ip_addr2he Unexecuted instantiation: cfg.tab.c:ip_addr2he Unexecuted instantiation: modparam.c:ip_addr2he Unexecuted instantiation: crc.c:ip_addr2he Unexecuted instantiation: re.c:ip_addr2he Unexecuted instantiation: lex.yy.c:ip_addr2he Unexecuted instantiation: cfg_pp.c:ip_addr2he Unexecuted instantiation: proxy.c:ip_addr2he Unexecuted instantiation: shutdown.c:ip_addr2he Unexecuted instantiation: cmds.c:ip_addr2he Unexecuted instantiation: core_cmds.c:ip_addr2he Unexecuted instantiation: serialize.c:ip_addr2he Unexecuted instantiation: cachedb.c:ip_addr2he Unexecuted instantiation: cachedb_id.c:ip_addr2he Unexecuted instantiation: fuzz_uri_parser.c:ip_addr2he Unexecuted instantiation: fuzz_core_funcs.c:ip_addr2he Unexecuted instantiation: fuzz_msg_parser.c:ip_addr2he |
752 | | #endif |