oid_copy_str(&name[namelen], (*l3vpn_bgp)->name,
vrf_name_len);
oid_index = namelen + vrf_name_len;
- name[oid_index++] =
- v4 ? INETADDRESSTYPEIPV4 : INETADDRESSTYPEIPV6;
- oid_copy_addr(&name[oid_index], &p->u.prefix4,
- addr_len);
+ if (v4) {
+ name[oid_index++] = INETADDRESSTYPEIPV4;
+ oid_copy_in_addr(&name[oid_index],
+ &p->u.prefix4);
+ } else {
+ name[oid_index++] = INETADDRESSTYPEIPV6;
+ oid_copy_in6_addr(&name[oid_index],
+ &p->u.prefix6);
+ }
+
oid_index += addr_len;
name[oid_index++] = p->prefixlen;
name[oid_index++] = *policy >> 8;
INETADDRESSTYPEUNKNOWN;
else {
name[oid_index++] = INETADDRESSTYPEIPV4;
- oid_copy_addr(&name[oid_index],
- &attr->nexthop,
- sizeof(struct in_addr));
+ oid_copy_in_addr(&name[oid_index],
+ &attr->nexthop);
oid_index += sizeof(struct in_addr);
}
} else {
INETADDRESSTYPEUNKNOWN;
else {
name[oid_index++] = INETADDRESSTYPEIPV6;
- oid_copy_addr(
+ oid_copy_in6_addr(
&name[oid_index],
- (struct in_addr *)&attr
- ->mp_nexthop_global,
- sizeof(struct in6_addr));
+ &attr->mp_nexthop_global);
oid_index += sizeof(struct in6_addr);
}
}
if (peer == 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;
return peer;
v->namelen + BGP_PATHATTR_ENTRY_OFFSET;
offset = name + v->namelen;
- oid_copy_addr(offset, &rn_p->u.prefix4,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, &rn_p->u.prefix4);
offset += IN_ADDR_SIZE;
*offset = rn_p->prefixlen;
offset++;
- oid_copy_addr(offset,
- &min->peer->su.sin.sin_addr,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(offset,
+ &min->peer->su.sin.sin_addr);
addr->prefix = rn_p->u.prefix4;
addr->prefixlen = rn_p->prefixlen;
if (ret == 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,
array_size(bgp_trap_oid), bgp_oid,
if (ret == 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,
array_size(bgp_trap_oid), bgp_oid,
if (nbr) {
*length = v->namelen + IN_ADDR_SIZE + 1;
- oid_copy_addr(name + v->namelen, nbr_addr,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(name + v->namelen, nbr_addr);
name[v->namelen + IN_ADDR_SIZE] = *ifindex;
return nbr;
}
/* Append index */
*length = LDP_ENTITY_TOTAL_LEN;
- oid_copy_addr(name + v->namelen, &entityLdpId,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(name + v->namelen, &entityLdpId);
name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0;
name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX;
/* Append index */
*length = LDP_ENTITY_TOTAL_LEN;
- oid_copy_addr(name + v->namelen, &entityLdpId,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(name + v->namelen, &entityLdpId);
name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0;
name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX;
struct in_addr peerLdpId = ctl_adj->id;
- oid_copy_addr(name + v->namelen, &entityLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen, &entityLdpId);
name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0;
name[v->namelen + 6] = LDP_DEFAULT_ENTITY_INDEX;
- oid_copy_addr(name + v->namelen + 7, &peerLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0;
name[v->namelen + 13] = adjacencyIndex;
memcpy(name, v->name, v->namelen * sizeof(oid));
/* Append index */
- oid_copy_addr(name + v->namelen, &entityLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen, &entityLdpId);
name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0;
name[v->namelen + 6] = entityIndex;
- oid_copy_addr(name + v->namelen + 7, &peerLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0;
memcpy(name, v->name, v->namelen * sizeof(oid));
/* Append index */
- oid_copy_addr(name + v->namelen, &entityLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen, &entityLdpId);
name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0;
name[v->namelen + 6] = entityIndex;
- oid_copy_addr(name + v->namelen + 7, &peerLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0;
memcpy(name, v->name, v->namelen * sizeof(oid));
/* Append index */
- oid_copy_addr(name + v->namelen, &entityLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen, &entityLdpId);
name[v->namelen + 4] = 0;
name[v->namelen + 5] = 0;
name[v->namelen + 6] = entityIndex;
- oid_copy_addr(name + v->namelen + 7, &peerLdpId,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen + 7, &peerLdpId);
name[v->namelen + 11] = 0;
name[v->namelen + 12] = 0;
entityIndex = LDP_DEFAULT_ENTITY_INDEX;
peerLdpId = ctl_nbr->id;
- oid_copy_addr(index, &entityLdpId, sizeof(struct in_addr));
- index[4] = 0;
- index[5] = 0;
- index[6] = entityIndex;
- oid_copy_addr(&index[7], &peerLdpId, sizeof(struct in_addr));
- index[11] = 0;
- index[12] = 0;
+ oid_copy_in_addr(index, &entityLdpId);
+ index[4] = 0;
+ index[5] = 0;
+ index[6] = entityIndex;
+ oid_copy_in_addr(&index[7], &peerLdpId);
+ index[11] = 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,
array_size(ldp_trap_oid), ldp_oid,
extern void oid2in6_addr(oid oid[], struct in6_addr *addr);
extern void oid2int(oid oid[], int *dest);
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 oid2string(oid oid[], int len, char *string);
extern void oid_copy_str(oid oid[], const char *string, int len);
*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;
const uint8_t *pnt;
+ int len = sizeof(struct in_addr);
- if (len == 0)
- return;
+ pnt = (uint8_t *)addr;
+
+ 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;
if (area == 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;
return area;
if (area == 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. */
name[v->namelen + sizeof(struct in_addr)] = 0;
*length = v->namelen + sizeof(struct in_addr) + 1;
/* Fill in value. */
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 = lsa->data->type;
offset++;
- oid_copy_addr(offset, &lsa->data->id,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, &lsa->data->id);
offset += IN_ADDR_SIZE;
- oid_copy_addr(offset, &lsa->data->adv_router,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(offset,
+ &lsa->data->adv_router);
return lsa;
}
/* Fill in value. */
offset = name + v->namelen;
- oid_copy_addr(offset, area_id, IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, area_id);
offset += IN_ADDR_SIZE;
- oid_copy_addr(offset, range_net, IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, range_net);
return range;
}
if (oi) {
*length = v->namelen + IN_ADDR_SIZE + 1;
offset = name + v->namelen;
- oid_copy_addr(offset, ifaddr, IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, ifaddr);
offset += IN_ADDR_SIZE;
*offset = *ifindex;
return oi;
if (oi) {
*length = v->namelen + IN_ADDR_SIZE + 1 + 1;
offset = name + v->namelen;
- oid_copy_addr(offset, ifaddr, IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, ifaddr);
offset += IN_ADDR_SIZE;
*offset = *ifindex;
offset++;
if (vl_data) {
*length = v->namelen + IN_ADDR_SIZE + IN_ADDR_SIZE;
- oid_copy_addr(name + v->namelen, area_id, IN_ADDR_SIZE);
- oid_copy_addr(name + v->namelen + IN_ADDR_SIZE,
- neighbor, IN_ADDR_SIZE);
+ oid_copy_in_addr(name + v->namelen, area_id);
+ oid_copy_in_addr(name + v->namelen + IN_ADDR_SIZE,
+ neighbor);
return vl_data;
}
}
if (nbr) {
*length = v->namelen + IN_ADDR_SIZE + 1;
- oid_copy_addr(name + v->namelen, nbr_addr,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(name + v->namelen, nbr_addr);
name[v->namelen + IN_ADDR_SIZE] = *ifindex;
return nbr;
}
*offset = OSPF_AS_EXTERNAL_LSA;
offset++;
- oid_copy_addr(offset, &lsa->data->id, IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, &lsa->data->id);
offset += IN_ADDR_SIZE;
- oid_copy_addr(offset, &lsa->data->adv_router,
- IN_ADDR_SIZE);
+ oid_copy_in_addr(offset, &lsa->data->adv_router);
return lsa;
}
zlog_info("%s: trap sent: %pI4 now %s", __func__,
&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;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,
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;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,
&oi->address->u.prefix4,
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;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,
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;
smux_trap(ospf_variables, array_size(ospf_variables), ospf_trap_oid,
if (ifp == 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);
|| (peer->domain
> (int)name[v->namelen
+ sizeof(struct in_addr)])) {
- oid_copy_addr(name + v->namelen, &peer->addr,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen,
+ &peer->addr);
name[v->namelen + sizeof(struct in_addr)] =
peer->domain;
*length =
if (!peer)
return NULL;
- oid_copy_addr(name + v->namelen, &peer->addr,
- sizeof(struct in_addr));
+ oid_copy_in_addr(name + v->namelen, &peer->addr);
name[v->namelen + sizeof(struct in_addr)] = peer->domain;
*length = sizeof(struct in_addr) + v->namelen + 1;