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