MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / srv2dns_node

Function srv2dns_node

resolve.c:1372–1408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1370
1371
1372static inline int srv2dns_node(struct rdata *head, struct dns_node **dn)
1373{
1374 unsigned int mem;
1375 unsigned int l;
1376 struct rdata *r;
1377 struct dns_node *n;
1378 char *p;
1379
1380 /* calculate how much mem is required */
1381 mem = sizeof(struct dns_node);
1382 for( r=head,l=0 ; r ; r=r->next,l++ )
1383 mem +=sizeof(struct dns_val) + get_naptr(r)->repl_len + 1;
1384
1385 n = (struct dns_node*)shm_malloc(mem);
1386 if (n==NULL) {
1387 LM_ERR("no more shm mem (%d)\n", mem);
1388 return -1;
1389 }
1390
1391 n->type = DNS_NODE_SRV;
1392 n->size = mem;
1393 n->idx = 0;
1394 n->no = l;
1395 n->kids = *dn;
1396 *dn = n;
1397
1398 n->vals = (struct dns_val*)(n+1);
1399 p = (char*)(n->vals+l);
1400 for( r=head,l=0 ; r ; r=r->next,l++ ) {
1401 n->vals[l].ival = get_naptr_proto( get_naptr(r) );
1402 n->vals[l].sval = p;
1403 memcpy( p, get_naptr(r)->repl, get_naptr(r)->repl_len );
1404 p += get_naptr(r)->repl_len;
1405 *(p++) = 0;
1406 }
1407 return 0;
1408}
1409
1410
1411static inline int a2dns_node(struct rdata *head, struct dns_node **dn)

Callers 1

sip_resolvehostFunction · 0.85

Calls 2

shm_mallocFunction · 0.85
get_naptr_protoFunction · 0.85

Tested by

no test coverage detected