Merge pull request #8344 from pjdruddy/coverity_mpls_l3vpn

lib, bgpd: add a specific oid_copy function for IPv6 addrs
This commit is contained in:
Donald Sharp 2021-03-25 19:40:34 -04:00 committed by GitHub
commit 1267dd416e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 79 additions and 81 deletions

View File

@ -1478,10 +1478,16 @@ static struct bgp_path_info *bgpL3vpnRte_lookup(struct variable *v, oid name[],
oid_copy_str(&name[namelen], (*l3vpn_bgp)->name, oid_copy_str(&name[namelen], (*l3vpn_bgp)->name,
vrf_name_len); vrf_name_len);
oid_index = namelen + vrf_name_len; oid_index = namelen + vrf_name_len;
name[oid_index++] = if (v4) {
v4 ? INETADDRESSTYPEIPV4 : INETADDRESSTYPEIPV6; name[oid_index++] = INETADDRESSTYPEIPV4;
oid_copy_addr(&name[oid_index], &p->u.prefix4, oid_copy_in_addr(&name[oid_index],
addr_len); &p->u.prefix4);
} else {
name[oid_index++] = INETADDRESSTYPEIPV6;
oid_copy_in6_addr(&name[oid_index],
&p->u.prefix6);
}
oid_index += addr_len; oid_index += addr_len;
name[oid_index++] = p->prefixlen; name[oid_index++] = p->prefixlen;
name[oid_index++] = *policy >> 8; name[oid_index++] = *policy >> 8;
@ -1493,9 +1499,8 @@ static struct bgp_path_info *bgpL3vpnRte_lookup(struct variable *v, oid name[],
INETADDRESSTYPEUNKNOWN; INETADDRESSTYPEUNKNOWN;
else { else {
name[oid_index++] = INETADDRESSTYPEIPV4; name[oid_index++] = INETADDRESSTYPEIPV4;
oid_copy_addr(&name[oid_index], oid_copy_in_addr(&name[oid_index],
&attr->nexthop, &attr->nexthop);
sizeof(struct in_addr));
oid_index += sizeof(struct in_addr); oid_index += sizeof(struct in_addr);
} }
} else { } else {
@ -1505,11 +1510,9 @@ static struct bgp_path_info *bgpL3vpnRte_lookup(struct variable *v, oid name[],
INETADDRESSTYPEUNKNOWN; INETADDRESSTYPEUNKNOWN;
else { else {
name[oid_index++] = INETADDRESSTYPEIPV6; name[oid_index++] = INETADDRESSTYPEIPV6;
oid_copy_addr( oid_copy_in6_addr(
&name[oid_index], &name[oid_index],
(struct in_addr *)&attr &attr->mp_nexthop_global);
->mp_nexthop_global,
sizeof(struct in6_addr));
oid_index += sizeof(struct in6_addr); oid_index += sizeof(struct in6_addr);
} }
} }

View File

@ -435,7 +435,7 @@ static struct peer *bgpPeerTable_lookup(struct variable *v, oid name[],
if (peer == NULL) if (peer == NULL)
return NULL; return NULL;
oid_copy_addr(name + namelen, addr, sizeof(struct in_addr)); oid_copy_in_addr(name + namelen, addr);
*length = sizeof(struct in_addr) + namelen; *length = sizeof(struct in_addr) + namelen;
return peer; return peer;
@ -767,14 +767,12 @@ static struct bgp_path_info *bgp4PathAttrLookup(struct variable *v, oid name[],
v->namelen + BGP_PATHATTR_ENTRY_OFFSET; v->namelen + BGP_PATHATTR_ENTRY_OFFSET;
offset = name + v->namelen; offset = name + v->namelen;
oid_copy_addr(offset, &rn_p->u.prefix4, oid_copy_in_addr(offset, &rn_p->u.prefix4);
IN_ADDR_SIZE);
offset += IN_ADDR_SIZE; offset += IN_ADDR_SIZE;
*offset = rn_p->prefixlen; *offset = rn_p->prefixlen;
offset++; offset++;
oid_copy_addr(offset, oid_copy_in_addr(offset,
&min->peer->su.sin.sin_addr, &min->peer->su.sin.sin_addr);
IN_ADDR_SIZE);
addr->prefix = rn_p->u.prefix4; addr->prefix = rn_p->u.prefix4;
addr->prefixlen = rn_p->prefixlen; addr->prefixlen = rn_p->prefixlen;
@ -868,7 +866,7 @@ static int bgpTrapEstablished(struct peer *peer)
if (ret == 0) if (ret == 0)
return 0; return 0;
oid_copy_addr(index, &addr, IN_ADDR_SIZE); oid_copy_in_addr(index, &addr);
smux_trap(bgp_variables, array_size(bgp_variables), bgp_trap_oid, smux_trap(bgp_variables, array_size(bgp_variables), bgp_trap_oid,
array_size(bgp_trap_oid), bgp_oid, array_size(bgp_trap_oid), bgp_oid,
@ -887,7 +885,7 @@ static int bgpTrapBackwardTransition(struct peer *peer)
if (ret == 0) if (ret == 0)
return 0; return 0;
oid_copy_addr(index, &addr, IN_ADDR_SIZE); oid_copy_in_addr(index, &addr);
smux_trap(bgp_variables, array_size(bgp_variables), bgp_trap_oid, smux_trap(bgp_variables, array_size(bgp_variables), bgp_trap_oid,
array_size(bgp_trap_oid), bgp_oid, array_size(bgp_trap_oid), bgp_oid,

View File

@ -588,8 +588,7 @@ static struct eigrp_neighbor *eigrpNbrLookup(struct variable *v, oid *name,
if (nbr) { if (nbr) {
*length = v->namelen + IN_ADDR_SIZE + 1; *length = v->namelen + IN_ADDR_SIZE + 1;
oid_copy_addr(name + v->namelen, nbr_addr, oid_copy_in_addr(name + v->namelen, nbr_addr);
IN_ADDR_SIZE);
name[v->namelen + IN_ADDR_SIZE] = *ifindex; name[v->namelen + IN_ADDR_SIZE] = *ifindex;
return nbr; return nbr;
} }

View File

@ -301,8 +301,7 @@ static uint8_t *ldpEntityTable(struct variable *v, oid name[], size_t *length,
/* Append index */ /* Append index */
*length = LDP_ENTITY_TOTAL_LEN; *length = LDP_ENTITY_TOTAL_LEN;
oid_copy_addr(name + v->namelen, &entityLdpId, oid_copy_in_addr(name + v->namelen, &entityLdpId);
IN_ADDR_SIZE);
name[v->namelen + 4] = 0; name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0; name[v->namelen + 5] = 0;
name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX; name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX;
@ -402,8 +401,7 @@ static uint8_t *ldpEntityStatsTable(struct variable *v, oid name[],
/* Append index */ /* Append index */
*length = LDP_ENTITY_TOTAL_LEN; *length = LDP_ENTITY_TOTAL_LEN;
oid_copy_addr(name + v->namelen, &entityLdpId, oid_copy_in_addr(name + v->namelen, &entityLdpId);
IN_ADDR_SIZE);
name[v->namelen + 4] = 0; name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0; name[v->namelen + 5] = 0;
name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX; name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX;
@ -640,13 +638,11 @@ static uint8_t *ldpHelloAdjacencyTable(struct variable *v, oid name[], size_t *l
struct in_addr peerLdpId = ctl_adj->id; struct in_addr peerLdpId = ctl_adj->id;
oid_copy_addr(name + v->namelen, &entityLdpId, oid_copy_in_addr(name + v->namelen, &entityLdpId);
sizeof(struct in_addr));
name[v->namelen + 4] = 0; name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0; name[v->namelen + 5] = 0;
name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX; name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX;
oid_copy_addr(name + v->namelen + 7, &peerLdpId, oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
sizeof(struct in_addr));
name[v->namelen + 11] = 0; name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0; name[v->namelen + 12] = 0;
name[v->namelen + 13] = adjacencyIndex; name[v->namelen + 13] = adjacencyIndex;
@ -804,14 +800,12 @@ static uint8_t *ldpPeerTable(struct variable *v, oid name[], size_t *length,
memcpy(name, v->name, v->namelen * sizeof(oid)); memcpy(name, v->name, v->namelen * sizeof(oid));
/* Append index */ /* Append index */
oid_copy_addr(name + v->namelen, &entityLdpId, oid_copy_in_addr(name + v->namelen, &entityLdpId);
sizeof(struct in_addr));
name[v->namelen + 4] = 0; name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0; name[v->namelen + 5] = 0;
name[v->namelen + 6] = entityIndex; name[v->namelen + 6] = entityIndex;
oid_copy_addr(name + v->namelen + 7, &peerLdpId, oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
sizeof(struct in_addr));
name[v->namelen + 11] = 0; name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0; name[v->namelen + 12] = 0;
@ -875,14 +869,12 @@ static uint8_t *ldpSessionTable(struct variable *v, oid name[], size_t *length,
memcpy(name, v->name, v->namelen * sizeof(oid)); memcpy(name, v->name, v->namelen * sizeof(oid));
/* Append index */ /* Append index */
oid_copy_addr(name + v->namelen, &entityLdpId, oid_copy_in_addr(name + v->namelen, &entityLdpId);
sizeof(struct in_addr));
name[v->namelen + 4] = 0; name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0; name[v->namelen + 5] = 0;
name[v->namelen + 6] = entityIndex; name[v->namelen + 6] = entityIndex;
oid_copy_addr(name + v->namelen + 7, &peerLdpId, oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
sizeof(struct in_addr));
name[v->namelen + 11] = 0; name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0; name[v->namelen + 12] = 0;
@ -961,13 +953,11 @@ static uint8_t *ldpSessionStatsTable(struct variable *v, oid name[],
memcpy(name, v->name, v->namelen * sizeof(oid)); memcpy(name, v->name, v->namelen * sizeof(oid));
/* Append index */ /* Append index */
oid_copy_addr(name + v->namelen, &entityLdpId, oid_copy_in_addr(name + v->namelen, &entityLdpId);
sizeof(struct in_addr));
name[v->namelen + 4] = 0; name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0; name[v->namelen + 5] = 0;
name[v->namelen + 6] = entityIndex; name[v->namelen + 6] = entityIndex;
oid_copy_addr(name + v->namelen + 7, &peerLdpId, oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
sizeof(struct in_addr));
name[v->namelen + 11] = 0; name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0; name[v->namelen + 12] = 0;
@ -1147,15 +1137,15 @@ ldpTrapSession(struct nbr * nbr, unsigned int sptrap)
entityIndex = LDP_DEFAULT_ENTITY_INDEX; entityIndex = LDP_DEFAULT_ENTITY_INDEX;
peerLdpId = ctl_nbr->id; peerLdpId = ctl_nbr->id;
oid_copy_addr(index, &entityLdpId, sizeof(struct in_addr)); oid_copy_in_addr(index, &entityLdpId);
index[4] = 0; index[4] = 0;
index[5] = 0; index[5] = 0;
index[6] = entityIndex; index[6] = entityIndex;
oid_copy_addr(&index[7], &peerLdpId, sizeof(struct in_addr)); oid_copy_in_addr(&index[7], &peerLdpId);
index[11] = 0; index[11] = 0;
index[12] = 0; index[12] = 0;
index[LDP_PEER_ENTRY_MAX_IDX_LEN] = 0; index[LDP_PEER_ENTRY_MAX_IDX_LEN] = 0;
smux_trap(ldpe_variables, array_size(ldpe_variables), ldp_trap_oid, smux_trap(ldpe_variables, array_size(ldpe_variables), ldp_trap_oid,
array_size(ldp_trap_oid), ldp_oid, array_size(ldp_trap_oid), ldp_oid,

View File

@ -152,7 +152,8 @@ extern void oid2in_addr(oid[], int, struct in_addr *);
extern void oid2in6_addr(oid oid[], struct in6_addr *addr); extern void oid2in6_addr(oid oid[], struct in6_addr *addr);
extern void oid2int(oid oid[], int *dest); extern void oid2int(oid oid[], int *dest);
extern void *oid_copy(void *, const void *, size_t); extern void *oid_copy(void *, const void *, size_t);
extern void oid_copy_addr(oid[], const struct in_addr *, int); extern void oid_copy_in_addr(oid[], const struct in_addr *);
extern void oid_copy_in6_addr(oid[], const struct in6_addr *);
extern void oid_copy_int(oid oid[], int *val); extern void oid_copy_int(oid oid[], int *val);
extern void oid2string(oid oid[], int len, char *string); extern void oid2string(oid oid[], int len, char *string);
extern void oid_copy_str(oid oid[], const char *string, int len); extern void oid_copy_str(oid oid[], const char *string, int len);

View File

@ -88,13 +88,24 @@ void oid2int(oid oid[], int *dest)
*dest = ntohl(network_dest); *dest = ntohl(network_dest);
} }
void oid_copy_addr(oid oid[], const struct in_addr *addr, int len) void oid_copy_in_addr(oid oid[], const struct in_addr *addr)
{ {
int i; int i;
const uint8_t *pnt; const uint8_t *pnt;
int len = sizeof(struct in_addr);
if (len == 0) pnt = (uint8_t *)addr;
return;
for (i = 0; i < len; i++)
oid[i] = *pnt++;
}
void oid_copy_in6_addr(oid oid[], const struct in6_addr *addr)
{
int i;
const uint8_t *pnt;
int len = sizeof(struct in6_addr);
pnt = (uint8_t *)addr; pnt = (uint8_t *)addr;

View File

@ -674,7 +674,7 @@ static struct ospf_area *ospfAreaLookup(struct variable *v, oid name[],
if (area == NULL) if (area == NULL)
return NULL; return NULL;
oid_copy_addr(name + v->namelen, addr, sizeof(struct in_addr)); oid_copy_in_addr(name + v->namelen, addr);
*length = sizeof(struct in_addr) + v->namelen; *length = sizeof(struct in_addr) + v->namelen;
return area; return area;
@ -800,7 +800,7 @@ static struct ospf_area *ospfStubAreaLookup(struct variable *v, oid name[],
if (area == NULL) if (area == NULL)
return NULL; return NULL;
oid_copy_addr(name + v->namelen, addr, sizeof(struct in_addr)); oid_copy_in_addr(name + v->namelen, addr);
/* Set TOS 0. */ /* Set TOS 0. */
name[v->namelen + sizeof(struct in_addr)] = 0; name[v->namelen + sizeof(struct in_addr)] = 0;
*length = v->namelen + sizeof(struct in_addr) + 1; *length = v->namelen + sizeof(struct in_addr) + 1;
@ -1008,15 +1008,14 @@ static struct ospf_lsa *ospfLsdbLookup(struct variable *v, oid *name,
/* Fill in value. */ /* Fill in value. */
offset = name + v->namelen; offset = name + v->namelen;
oid_copy_addr(offset, area_id, IN_ADDR_SIZE); oid_copy_in_addr(offset, area_id);
offset += IN_ADDR_SIZE; offset += IN_ADDR_SIZE;
*offset = lsa->data->type; *offset = lsa->data->type;
offset++; offset++;
oid_copy_addr(offset, &lsa->data->id, oid_copy_in_addr(offset, &lsa->data->id);
IN_ADDR_SIZE);
offset += IN_ADDR_SIZE; offset += IN_ADDR_SIZE;
oid_copy_addr(offset, &lsa->data->adv_router, oid_copy_in_addr(offset,
IN_ADDR_SIZE); &lsa->data->adv_router);
return lsa; return lsa;
} }
@ -1170,9 +1169,9 @@ static struct ospf_area_range *ospfAreaRangeLookup(struct variable *v,
/* Fill in value. */ /* Fill in value. */
offset = name + v->namelen; offset = name + v->namelen;
oid_copy_addr(offset, area_id, IN_ADDR_SIZE); oid_copy_in_addr(offset, area_id);
offset += IN_ADDR_SIZE; offset += IN_ADDR_SIZE;
oid_copy_addr(offset, range_net, IN_ADDR_SIZE); oid_copy_in_addr(offset, range_net);
return range; return range;
} }
@ -1573,7 +1572,7 @@ static struct ospf_interface *ospfIfLookup(struct variable *v, oid *name,
if (oi) { if (oi) {
*length = v->namelen + IN_ADDR_SIZE + 1; *length = v->namelen + IN_ADDR_SIZE + 1;
offset = name + v->namelen; offset = name + v->namelen;
oid_copy_addr(offset, ifaddr, IN_ADDR_SIZE); oid_copy_in_addr(offset, ifaddr);
offset += IN_ADDR_SIZE; offset += IN_ADDR_SIZE;
*offset = *ifindex; *offset = *ifindex;
return oi; return oi;
@ -1717,7 +1716,7 @@ static struct ospf_interface *ospfIfMetricLookup(struct variable *v, oid *name,
if (oi) { if (oi) {
*length = v->namelen + IN_ADDR_SIZE + 1 + 1; *length = v->namelen + IN_ADDR_SIZE + 1 + 1;
offset = name + v->namelen; offset = name + v->namelen;
oid_copy_addr(offset, ifaddr, IN_ADDR_SIZE); oid_copy_in_addr(offset, ifaddr);
offset += IN_ADDR_SIZE; offset += IN_ADDR_SIZE;
*offset = *ifindex; *offset = *ifindex;
offset++; offset++;
@ -1906,9 +1905,9 @@ ospfVirtIfLookup(struct variable *v, oid *name, size_t *length,
if (vl_data) { if (vl_data) {
*length = v->namelen + IN_ADDR_SIZE + IN_ADDR_SIZE; *length = v->namelen + IN_ADDR_SIZE + IN_ADDR_SIZE;
oid_copy_addr(name + v->namelen, area_id, IN_ADDR_SIZE); oid_copy_in_addr(name + v->namelen, area_id);
oid_copy_addr(name + v->namelen + IN_ADDR_SIZE, oid_copy_in_addr(name + v->namelen + IN_ADDR_SIZE,
neighbor, IN_ADDR_SIZE); neighbor);
return vl_data; return vl_data;
} }
} }
@ -2083,8 +2082,7 @@ static struct ospf_neighbor *ospfNbrLookup(struct variable *v, oid *name,
if (nbr) { if (nbr) {
*length = v->namelen + IN_ADDR_SIZE + 1; *length = v->namelen + IN_ADDR_SIZE + 1;
oid_copy_addr(name + v->namelen, nbr_addr, oid_copy_in_addr(name + v->namelen, nbr_addr);
IN_ADDR_SIZE);
name[v->namelen + IN_ADDR_SIZE] = *ifindex; name[v->namelen + IN_ADDR_SIZE] = *ifindex;
return nbr; return nbr;
} }
@ -2307,10 +2305,9 @@ static struct ospf_lsa *ospfExtLsdbLookup(struct variable *v, oid *name,
*offset = OSPF_AS_EXTERNAL_LSA; *offset = OSPF_AS_EXTERNAL_LSA;
offset++; offset++;
oid_copy_addr(offset, &lsa->data->id, IN_ADDR_SIZE); oid_copy_in_addr(offset, &lsa->data->id);
offset += IN_ADDR_SIZE; offset += IN_ADDR_SIZE;
oid_copy_addr(offset, &lsa->data->adv_router, oid_copy_in_addr(offset, &lsa->data->adv_router);
IN_ADDR_SIZE);
return lsa; return lsa;
} }
@ -2440,7 +2437,7 @@ static void ospfTrapNbrStateChange(struct ospf_neighbor *on)
zlog_info("%s: trap sent: %pI4 now %s", __func__, zlog_info("%s: trap sent: %pI4 now %s", __func__,
&on->address.u.prefix4, msgbuf); &on->address.u.prefix4, msgbuf);
oid_copy_addr(index, &(on->address.u.prefix4), IN_ADDR_SIZE); oid_copy_in_addr(index, &(on->address.u.prefix4));
index[IN_ADDR_SIZE] = 0; index[IN_ADDR_SIZE] = 0;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid, smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,
@ -2455,7 +2452,7 @@ static void ospfTrapVirtNbrStateChange(struct ospf_neighbor *on)
zlog_info("ospfTrapVirtNbrStateChange trap sent"); zlog_info("ospfTrapVirtNbrStateChange trap sent");
oid_copy_addr(index, &(on->address.u.prefix4), IN_ADDR_SIZE); oid_copy_in_addr(index, &(on->address.u.prefix4));
index[IN_ADDR_SIZE] = 0; index[IN_ADDR_SIZE] = 0;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid, smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,
@ -2499,7 +2496,7 @@ static void ospfTrapIfStateChange(struct ospf_interface *oi)
&oi->address->u.prefix4, &oi->address->u.prefix4,
lookup_msg(ospf_ism_state_msg, oi->state, NULL)); lookup_msg(ospf_ism_state_msg, oi->state, NULL));
oid_copy_addr(index, &(oi->address->u.prefix4), IN_ADDR_SIZE); oid_copy_in_addr(index, &(oi->address->u.prefix4));
index[IN_ADDR_SIZE] = 0; index[IN_ADDR_SIZE] = 0;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid, smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,
@ -2514,7 +2511,7 @@ static void ospfTrapVirtIfStateChange(struct ospf_interface *oi)
zlog_info("ospfTrapVirtIfStateChange trap sent"); zlog_info("ospfTrapVirtIfStateChange trap sent");
oid_copy_addr(index, &(oi->address->u.prefix4), IN_ADDR_SIZE); oid_copy_in_addr(index, &(oi->address->u.prefix4));
index[IN_ADDR_SIZE] = 0; index[IN_ADDR_SIZE] = 0;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid, smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,

View File

@ -271,7 +271,7 @@ static struct interface *rip2IfLookup(struct variable *v, oid name[],
if (ifp == NULL) if (ifp == NULL)
return NULL; return NULL;
oid_copy_addr(name + v->namelen, addr, sizeof(struct in_addr)); oid_copy_in_addr(name + v->namelen, addr);
*length = v->namelen + sizeof(struct in_addr); *length = v->namelen + sizeof(struct in_addr);
@ -320,8 +320,8 @@ static struct rip_peer *rip2PeerLookup(struct variable *v, oid name[],
|| (peer->domain || (peer->domain
> (int)name[v->namelen > (int)name[v->namelen
+ sizeof(struct in_addr)])) { + sizeof(struct in_addr)])) {
oid_copy_addr(name + v->namelen, &peer->addr, oid_copy_in_addr(name + v->namelen,
sizeof(struct in_addr)); &peer->addr);
name[v->namelen + sizeof(struct in_addr)] = name[v->namelen + sizeof(struct in_addr)] =
peer->domain; peer->domain;
*length = *length =
@ -334,8 +334,7 @@ static struct rip_peer *rip2PeerLookup(struct variable *v, oid name[],
if (!peer) if (!peer)
return NULL; return NULL;
oid_copy_addr(name + v->namelen, &peer->addr, oid_copy_in_addr(name + v->namelen, &peer->addr);
sizeof(struct in_addr));
name[v->namelen + sizeof(struct in_addr)] = peer->domain; name[v->namelen + sizeof(struct in_addr)] = peer->domain;
*length = sizeof(struct in_addr) + v->namelen + 1; *length = sizeof(struct in_addr) + v->namelen + 1;