Coverage Report

Created: 2026-03-11 06:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/opensips/ip_addr.h
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
pvar.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
resolve.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
resolve.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