int qlen;
if (tb[IFLA_TXQLEN])
- qlen = *(int *)RTA_DATA(tb[IFLA_TXQLEN]);
+ qlen = rta_getattr_u32(tb[IFLA_TXQLEN]);
else {
struct ifreq ifr = {};
int s = socket(AF_INET, SOCK_STREAM, 0);
struct link_util *lu;
struct link_util *slave_lu;
char slave[32];
- char *kind;
- char *slave_kind;
parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb);
if (linkinfo[IFLA_INFO_KIND]) {
- kind = RTA_DATA(linkinfo[IFLA_INFO_KIND]);
+ const char *kind
+ = rta_getattr_str(linkinfo[IFLA_INFO_KIND]);
fprintf(fp, "%s", _SL_);
fprintf(fp, " %s ", kind);
}
if (linkinfo[IFLA_INFO_SLAVE_KIND]) {
- slave_kind = RTA_DATA(linkinfo[IFLA_INFO_SLAVE_KIND]);
+ const char *slave_kind
+ = rta_getattr_str(linkinfo[IFLA_INFO_SLAVE_KIND]);
fprintf(fp, "%s", _SL_);
fprintf(fp, " %s_slave ", slave_kind);
fprintf(fp, " RX: bytes packets mcast bcast %s", _SL_);
fprintf(fp, " ");
- print_num(fp, 10, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_RX_BYTES]));
- print_num(fp, 8, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_RX_PACKETS]));
- print_num(fp, 7, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_MULTICAST]));
- print_num(fp, 7, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_BROADCAST]));
+ print_num(fp, 10, rta_getattr_u64(vf[IFLA_VF_STATS_RX_BYTES]));
+ print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_RX_PACKETS]));
+ print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_MULTICAST]));
+ print_num(fp, 7, rta_getattr_u64(vf[IFLA_VF_STATS_BROADCAST]));
/* TX stats */
fprintf(fp, "%s", _SL_);
fprintf(fp, " TX: bytes packets %s", _SL_);
fprintf(fp, " ");
- print_num(fp, 10, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_TX_BYTES]));
- print_num(fp, 8, *(__u64 *)RTA_DATA(vf[IFLA_VF_STATS_TX_PACKETS]));
+ print_num(fp, 10, rta_getattr_u64(vf[IFLA_VF_STATS_TX_BYTES]));
+ print_num(fp, 8, rta_getattr_u64(vf[IFLA_VF_STATS_TX_PACKETS]));
}
static void print_link_stats64(FILE *fp, const struct rtnl_link_stats64 *s,
print_num(fp, 7, s->tx_window_errors);
print_num(fp, 7, s->tx_heartbeat_errors);
if (carrier_changes)
- print_num(fp, 7, *(uint32_t *)RTA_DATA(carrier_changes));
+ print_num(fp, 7, rta_getattr_u32(carrier_changes));
}
}
print_num(fp, 7, s->tx_window_errors);
print_num(fp, 7, s->tx_heartbeat_errors);
if (carrier_changes)
- print_num(fp, 7, *(uint32_t *)RTA_DATA(carrier_changes));
+ print_num(fp, 7, rta_getattr_u32(carrier_changes));
}
}
struct ifinfomsg *ifi = NLMSG_DATA(n);
struct rtattr *tb[IFLA_MAX+1];
int len = n->nlmsg_len;
- char *name;
+ const char *name;
char buf[32] = { 0, };
unsigned int m_flag = 0;
return -1;
parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
- if (tb[IFLA_IFNAME] == NULL)
+ if (tb[IFLA_IFNAME] == NULL) {
fprintf(stderr, "BUG: device with ifindex %d has nil ifname\n", ifi->ifi_index);
+ name = "<nil>";
+ } else {
+ name = rta_getattr_str(tb[IFLA_IFNAME]);
+ }
if (filter.label &&
(!filter.family || filter.family == AF_PACKET) &&
return -1;
if (tb[IFLA_GROUP]) {
- int group = *(int *)RTA_DATA(tb[IFLA_GROUP]);
+ int group = rta_getattr_u32(tb[IFLA_GROUP]);
if (filter.group != -1 && group != filter.group)
return -1;
}
if (tb[IFLA_MASTER]) {
- int master = *(int *)RTA_DATA(tb[IFLA_MASTER]);
+ int master = rta_getattr_u32(tb[IFLA_MASTER]);
if (filter.master > 0 && master != filter.master)
return -1;
if (n->nlmsg_type == RTM_DELLINK)
fprintf(fp, "Deleted ");
- name = (char *)(tb[IFLA_IFNAME] ? rta_getattr_str(tb[IFLA_IFNAME]) : "<nil>");
-
if (tb[IFLA_LINK]) {
SPRINT_BUF(b1);
- int iflink = *(int *)RTA_DATA(tb[IFLA_LINK]);
+ int iflink = rta_getattr_u32(tb[IFLA_LINK]);
if (iflink == 0)
snprintf(buf, sizeof(buf), "%s@NONE", name);
return 0;
if (tb[IFLA_GROUP]) {
- int group = *(int *)RTA_DATA(tb[IFLA_GROUP]);
+ int group = rta_getattr_u32(tb[IFLA_GROUP]);
if (filter.group != -1 && group != filter.group)
return -1;
}
if (tb[IFLA_MASTER]) {
- int master = *(int *)RTA_DATA(tb[IFLA_MASTER]);
+ int master = rta_getattr_u32(tb[IFLA_MASTER]);
if (filter.master > 0 && master != filter.master)
return -1;
if (tb[IFLA_LINK]) {
SPRINT_BUF(b1);
- int iflink = *(int *)RTA_DATA(tb[IFLA_LINK]);
+ int iflink = rta_getattr_u32(tb[IFLA_LINK]);
if (iflink == 0)
fprintf(fp, "@NONE: ");
print_link_flags(fp, ifi->ifi_flags, m_flag);
if (tb[IFLA_MTU])
- fprintf(fp, "mtu %u ", *(int *)RTA_DATA(tb[IFLA_MTU]));
+ fprintf(fp, "mtu %u ", rta_getattr_u32(tb[IFLA_MTU]));
if (tb[IFLA_XDP])
xdp_dump(fp, tb[IFLA_XDP]);
if (tb[IFLA_QDISC])
fprintf(fp, "qdisc %s ", rta_getattr_str(tb[IFLA_QDISC]));
if (tb[IFLA_MASTER]) {
SPRINT_BUF(b1);
- fprintf(fp, "master %s ", ll_idx_n2a(*(int *)RTA_DATA(tb[IFLA_MASTER]), b1));
+ fprintf(fp, "master %s ", ll_idx_n2a(rta_getattr_u32(tb[IFLA_MASTER]), b1));
}
if (tb[IFLA_OPERSTATE])
if (tb[IFLA_GROUP]) {
SPRINT_BUF(b1);
- int group = *(int *)RTA_DATA(tb[IFLA_GROUP]);
+ int group = rta_getattr_u32(tb[IFLA_GROUP]);
fprintf(fp, "group %s ", rtnl_group_n2a(group, b1, sizeof(b1)));
}
}
if (tb[IFLA_LINK_NETNSID]) {
- int id = *(int *)RTA_DATA(tb[IFLA_LINK_NETNSID]);
+ int id = rta_getattr_u32(tb[IFLA_LINK_NETNSID]);
if (id >= 0)
fprintf(fp, " link-netnsid %d", id);
if (show_details) {
if (tb[IFLA_PROMISCUITY])
fprintf(fp, " promiscuity %u ",
- *(int *)RTA_DATA(tb[IFLA_PROMISCUITY]));
+ rta_getattr_u32(tb[IFLA_PROMISCUITY]));
if (tb[IFLA_LINKINFO])
print_linktype(fp, tb[IFLA_LINKINFO]);
}
if (tb[IFLA_CAN_STATE]) {
- int *state = RTA_DATA(tb[IFLA_CAN_STATE]);
+ uint32_t state = rta_getattr_u32(tb[IFLA_CAN_STATE]);
- fprintf(f, "state %s ", *state <= CAN_STATE_MAX ?
- can_state_names[*state] : "UNKNOWN");
+ fprintf(f, "state %s ", state <= CAN_STATE_MAX ?
+ can_state_names[state] : "UNKNOWN");
}
if (tb[IFLA_CAN_BERR_COUNTER]) {
return 0;
if (tb[RTA_IIF])
- iif = *(int *)RTA_DATA(tb[RTA_IIF]);
+ iif = rta_getattr_u32(tb[RTA_IIF]);
if (filter.iif && filter.iif != iif)
return 0;
fprintf(fp, "autoconf ");
if (tb[PREFIX_CACHEINFO]) {
- struct prefix_cacheinfo *pc;
-
- pc = (struct prefix_cacheinfo *)RTA_DATA(tb[PREFIX_CACHEINFO]);
+ const struct prefix_cacheinfo *pc
+ = RTA_DATA(tb[PREFIX_CACHEINFO]);
fprintf(fp, "valid %u ", pc->valid_time);
fprintf(fp, "preferred %u ", pc->preferred_time);
int iif = 0;
if (tb[RTA_IIF])
- iif = *(int *)RTA_DATA(tb[RTA_IIF]);
+ iif = rta_getattr_u32(tb[RTA_IIF]);
if ((iif^filter.iif)&filter.iifmask)
return 0;
}
int oif = 0;
if (tb[RTA_OIF])
- oif = *(int *)RTA_DATA(tb[RTA_OIF]);
+ oif = rta_getattr_u32(tb[RTA_OIF]);
if ((oif^filter.oif)&filter.oifmask)
return 0;
}
int mark = 0;
if (tb[RTA_MARK])
- mark = *(int *)RTA_DATA(tb[RTA_MARK]);
+ mark = rta_getattr_u32(tb[RTA_MARK]);
if ((mark ^ filter.mark) & filter.markmask)
return 0;
}
r->rtm_dst_len == 0 &&
r->rtm_type == RTN_UNREACHABLE &&
tb[RTA_PRIORITY] &&
- *(int *)RTA_DATA(tb[RTA_PRIORITY]) == -1)
+ rta_getattr_u32(tb[RTA_PRIORITY]) == -1)
return 0;
return 1;
format_host(via->rtvia_family, len, via->rtvia_addr));
}
if (tb[RTA_OIF] && filter.oifmask != -1)
- fprintf(fp, "dev %s ", ll_index_to_name(*(int *)RTA_DATA(tb[RTA_OIF])));
+ fprintf(fp, "dev %s ", ll_index_to_name(rta_getattr_u32(tb[RTA_OIF])));
if (table && (table != RT_TABLE_MAIN || show_details > 0) && !filter.tb)
fprintf(fp, "table %s ", rtnl_rttable_n2a(table, b1, sizeof(b1)));
if (r->rtm_flags & RTNH_F_UNRESOLVED)
fprintf(fp, "unresolved ");
if (tb[RTA_MARK]) {
- unsigned int mark = *(unsigned int *)RTA_DATA(tb[RTA_MARK]);
+ unsigned int mark = rta_getattr_u32(tb[RTA_MARK]);
if (mark) {
if (mark >= 16)
parse_rtattr(mxrta, RTAX_MAX, RTA_DATA(tb[RTA_METRICS]),
RTA_PAYLOAD(tb[RTA_METRICS]));
if (mxrta[RTAX_LOCK])
- mxlock = *(unsigned *)RTA_DATA(mxrta[RTAX_LOCK]);
+ mxlock = rta_getattr_u32(mxrta[RTAX_LOCK]);
for (i = 2; i <= RTAX_MAX; i++) {
__u32 val = 0U;
}
}
if (tb[RTA_IIF] && filter.iifmask != -1) {
- fprintf(fp, " iif %s", ll_index_to_name(*(int *)RTA_DATA(tb[RTA_IIF])));
+ fprintf(fp, " iif %s",
+ ll_index_to_name(rta_getattr_u32(tb[RTA_IIF])));
}
if (tb[RTA_MULTIPATH]) {
struct rtnexthop *nh = RTA_DATA(tb[RTA_MULTIPATH]);
if (tb[ILA_ATTR_LOCATOR]) {
char abuf[ADDR64_BUF_SIZE];
- addr64_n2a(*(__u64 *)RTA_DATA(tb[ILA_ATTR_LOCATOR]),
+ addr64_n2a(rta_getattr_u64(tb[ILA_ATTR_LOCATOR]),
abuf, sizeof(abuf));
fprintf(fp, " %s ", abuf);
}
if (tb[XFRMA_ALG_AEAD]) {
struct rtattr *rta = tb[XFRMA_ALG_AEAD];
- xfrm_aead_print((struct xfrm_algo_aead *)RTA_DATA(rta),
+ xfrm_aead_print(RTA_DATA(rta),
RTA_PAYLOAD(rta), fp, prefix);
}
}
if (tb[XFRMA_COADDR]) {
- xfrm_address_t *coa;
+ const xfrm_address_t *coa;
if (prefix)
fputs(prefix, fp);
fprintf(fp, "coa ");
- coa = (xfrm_address_t *)RTA_DATA(tb[XFRMA_COADDR]);
-
+ coa = RTA_DATA(tb[XFRMA_COADDR]);
if (RTA_PAYLOAD(tb[XFRMA_COADDR]) < sizeof(*coa)) {
fprintf(fp, "(ERROR truncated)");
fprintf(fp, "%s", _SL_);
return;
}
- replay = (struct xfrm_replay_state *)RTA_DATA(tb[XFRMA_REPLAY_VAL]);
+ replay = RTA_DATA(tb[XFRMA_REPLAY_VAL]);
fprintf(fp, "seq 0x%x, oseq 0x%x, bitmap 0x%08x",
replay->seq, replay->oseq, replay->bitmap);
fprintf(fp, "%s", _SL_);
}
fprintf(fp, "%s", _SL_);
- replay = (struct xfrm_replay_state_esn *)RTA_DATA(tb[XFRMA_REPLAY_ESN_VAL]);
+ replay = RTA_DATA(tb[XFRMA_REPLAY_ESN_VAL]);
if (prefix)
fputs(prefix, fp);
fprintf(fp, " seq-hi 0x%x, seq 0x%x, oseq-hi 0x%0x, oseq 0x%0x",
fprintf(fp, "%x", flags);
}
if (show_stats > 0 && tb[XFRMA_SA_EXTRA_FLAGS]) {
- __u32 extra_flags = *(__u32 *)RTA_DATA(tb[XFRMA_SA_EXTRA_FLAGS]);
+ __u32 extra_flags = rta_getattr_u32(tb[XFRMA_SA_EXTRA_FLAGS]);
fprintf(fp, "extra_flag ");
XFRM_FLAG_PRINT(fp, extra_flags,
if (RTA_PAYLOAD(tb[XFRMA_SEC_CTX]) < sizeof(*sctx))
fprintf(fp, "(ERROR truncated)");
- sctx = (struct xfrm_user_sec_ctx *)RTA_DATA(tb[XFRMA_SEC_CTX]);
+ sctx = RTA_DATA(tb[XFRMA_SEC_CTX]);
fprintf(fp, "%s %s", (char *)(sctx + 1), _SL_);
}
if (RTA_PAYLOAD(tb[XFRMA_SEC_CTX]) < sizeof(*sctx))
fprintf(fp, "(ERROR truncated)");
- sctx = (struct xfrm_user_sec_ctx *)RTA_DATA(tb[XFRMA_SEC_CTX]);
+ sctx = RTA_DATA(tb[XFRMA_SEC_CTX]);
fprintf(fp, "%s ", (char *)(sctx + 1));
fprintf(fp, "%s", _SL_);
if (RTA_PAYLOAD(tb[XFRMA_POLICY_TYPE]) < sizeof(*upt))
fprintf(fp, "(ERROR truncated)");
- upt = (struct xfrm_userpolicy_type *)RTA_DATA(tb[XFRMA_POLICY_TYPE]);
+ upt = RTA_DATA(tb[XFRMA_POLICY_TYPE]);
fprintf(fp, "%s ", strxf_ptype(upt->type));
}
char s2[64];
const char *local = "any";
const char *remote = "any";
+ __u16 prefixlen, type;
if (!tb)
return;
}
if (tb[IFLA_IPTUN_6RD_PREFIXLEN] &&
- *(__u16 *)RTA_DATA(tb[IFLA_IPTUN_6RD_PREFIXLEN])) {
- __u16 prefixlen = rta_getattr_u16(tb[IFLA_IPTUN_6RD_PREFIXLEN]);
+ (prefixlen = rta_getattr_u16(tb[IFLA_IPTUN_6RD_PREFIXLEN]))) {
__u16 relayprefixlen =
rta_getattr_u16(tb[IFLA_IPTUN_6RD_RELAY_PREFIXLEN]);
__u32 relayprefix =
}
if (tb[IFLA_IPTUN_ENCAP_TYPE] &&
- *(__u16 *)RTA_DATA(tb[IFLA_IPTUN_ENCAP_TYPE]) != TUNNEL_ENCAP_NONE) {
- __u16 type = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_TYPE]);
+ (type = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_TYPE])) != TUNNEL_ENCAP_NONE) {
__u16 flags = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_FLAGS]);
__u16 sport = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_SPORT]);
__u16 dport = rta_getattr_u16(tb[IFLA_IPTUN_ENCAP_DPORT]);
linkinfo[IFLA_INFO_DATA]);
if (vtiinfo[IFLA_VTI_IKEY])
- ikey = *(__u32 *)RTA_DATA(vtiinfo[IFLA_VTI_IKEY]);
+ ikey = rta_getattr_u32(vtiinfo[IFLA_VTI_IKEY]);
if (vtiinfo[IFLA_VTI_OKEY])
- okey = *(__u32 *)RTA_DATA(vtiinfo[IFLA_VTI_OKEY]);
+ okey = rta_getattr_u32(vtiinfo[IFLA_VTI_OKEY]);
if (vtiinfo[IFLA_VTI_LOCAL])
- saddr = *(__u32 *)RTA_DATA(vtiinfo[IFLA_VTI_LOCAL]);
+ saddr = rta_getattr_u32(vtiinfo[IFLA_VTI_LOCAL]);
if (vtiinfo[IFLA_VTI_REMOTE])
- daddr = *(__u32 *)RTA_DATA(vtiinfo[IFLA_VTI_REMOTE]);
+ daddr = rta_getattr_u32(vtiinfo[IFLA_VTI_REMOTE]);
if (vtiinfo[IFLA_VTI_LINK])
- link = *(__u8 *)RTA_DATA(vtiinfo[IFLA_VTI_LINK]);
+ link = rta_getattr_u8(vtiinfo[IFLA_VTI_LINK]);
}
while (argc > 0) {
static void vti_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
{
- char s2[64];
const char *local = "any";
const char *remote = "any";
+ unsigned int link;
+ char s2[64];
if (!tb)
return;
if (tb[IFLA_VTI_REMOTE]) {
- unsigned int addr = *(__u32 *)RTA_DATA(tb[IFLA_VTI_REMOTE]);
+ unsigned int addr = rta_getattr_u32(tb[IFLA_VTI_REMOTE]);
if (addr)
remote = format_host(AF_INET, 4, &addr);
fprintf(f, "remote %s ", remote);
if (tb[IFLA_VTI_LOCAL]) {
- unsigned int addr = *(__u32 *)RTA_DATA(tb[IFLA_VTI_LOCAL]);
+ unsigned int addr = rta_getattr_u32(tb[IFLA_VTI_LOCAL]);
if (addr)
local = format_host(AF_INET, 4, &addr);
fprintf(f, "local %s ", local);
- if (tb[IFLA_VTI_LINK] && *(__u32 *)RTA_DATA(tb[IFLA_VTI_LINK])) {
- unsigned int link = *(__u32 *)RTA_DATA(tb[IFLA_VTI_LINK]);
+ if (tb[IFLA_VTI_LINK] &&
+ (link = rta_getattr_u32(tb[IFLA_VTI_LINK]))) {
const char *n = if_indextoname(link, s2);
if (n)
static void vti6_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[])
{
- char s2[64];
const char *local = "any";
const char *remote = "any";
struct in6_addr saddr;
struct in6_addr daddr;
+ unsigned int link;
+ char s2[64];
if (!tb)
return;
fprintf(f, "local %s ", local);
- if (tb[IFLA_VTI_LINK] && *(__u32 *)RTA_DATA(tb[IFLA_VTI_LINK])) {
- unsigned int link = *(__u32 *)RTA_DATA(tb[IFLA_VTI_LINK]);
+ if (tb[IFLA_VTI_LINK] && (link = rta_getattr_u32(tb[IFLA_VTI_LINK]))) {
const char *n = if_indextoname(link, s2);
if (n)
if (RTA_PAYLOAD(tb[XFRMA_POLICY_TYPE]) < sizeof(*upt))
fprintf(fp, "(ERROR truncated)");
- upt = (struct xfrm_userpolicy_type *)RTA_DATA(tb[XFRMA_POLICY_TYPE]);
+ upt = RTA_DATA(tb[XFRMA_POLICY_TYPE]);
fprintf(fp, "%s ", strxf_ptype(upt->type));
}
fprintf(stderr, "too short XFRMA_POLICY_TYPE len\n");
return -1;
}
- upt = (struct xfrm_userpolicy_type *)RTA_DATA(tb[XFRMA_POLICY_TYPE]);
+ upt = RTA_DATA(tb[XFRMA_POLICY_TYPE]);
ptype = upt->type;
}
fprintf(stderr, "Buggy XFRM_MSG_DELPOLICY: too short XFRMA_POLICY len\n");
return -1;
}
- xpinfo = (struct xfrm_userpolicy_info *)RTA_DATA(tb[XFRMA_POLICY]);
+ xpinfo = RTA_DATA(tb[XFRMA_POLICY]);
}
xfrm_policy_info_print(xpinfo, tb, fp, NULL, NULL);
fprintf(stderr, "too short XFRMA_POLICY_TYPE len\n");
return -1;
}
- upt = (struct xfrm_userpolicy_type *)RTA_DATA(tb[XFRMA_POLICY_TYPE]);
+ upt = RTA_DATA(tb[XFRMA_POLICY_TYPE]);
ptype = upt->type;
}
__u32 *f = NLMSG_DATA(n);
struct rtattr *tb[XFRMA_SAD_MAX+1];
struct rtattr *rta;
- __u32 *cnt;
-
int len = n->nlmsg_len;
len -= NLMSG_LENGTH(sizeof(__u32));
parse_rtattr(tb, XFRMA_SAD_MAX, rta, len);
if (tb[XFRMA_SAD_CNT]) {
+ __u32 cnt;
+
fprintf(fp, "\t SAD");
- cnt = (__u32 *)RTA_DATA(tb[XFRMA_SAD_CNT]);
- fprintf(fp, " count %d", *cnt);
+ cnt = rta_getattr_u32(tb[XFRMA_SAD_CNT]);
+ fprintf(fp, " count %u", cnt);
} else {
fprintf(fp, "BAD SAD info returned\n");
return -1;
s->mark = 0;
if (tb[INET_DIAG_MARK])
- s->mark = *(__u32 *) RTA_DATA(tb[INET_DIAG_MARK]);
+ s->mark = rta_getattr_u32(tb[INET_DIAG_MARK]);
if (tb[INET_DIAG_PROTOCOL])
- s->raw_prot = *(__u8 *)RTA_DATA(tb[INET_DIAG_PROTOCOL]);
+ s->raw_prot = rta_getattr_u8(tb[INET_DIAG_PROTOCOL]);
else
s->raw_prot = 0;
nlh->nlmsg_len - NLMSG_LENGTH(sizeof(*r)));
if (tb[INET_DIAG_PROTOCOL])
- s->type = *(__u8 *)RTA_DATA(tb[INET_DIAG_PROTOCOL]);
+ s->type = rta_getattr_u8(tb[INET_DIAG_PROTOCOL]);
inet_stats_print(s);
if (s->local.family == AF_INET6 && tb[INET_DIAG_SKV6ONLY]) {
unsigned char v6only;
- v6only = *(__u8 *)RTA_DATA(tb[INET_DIAG_SKV6ONLY]);
+ v6only = rta_getattr_u8(tb[INET_DIAG_SKV6ONLY]);
printf(" v6only:%u", v6only);
}
if (tb[INET_DIAG_SHUTDOWN]) {
unsigned char mask;
- mask = *(__u8 *)RTA_DATA(tb[INET_DIAG_SHUTDOWN]);
+ mask = rta_getattr_u8(tb[INET_DIAG_SHUTDOWN]);
printf(" %c-%c", mask & 1 ? '-' : '<', mask & 2 ? '-' : '>');
}
}
if (tb[UNIX_DIAG_SHUTDOWN]) {
unsigned char mask;
- mask = *(__u8 *)RTA_DATA(tb[UNIX_DIAG_SHUTDOWN]);
+ mask = rta_getattr_u8(tb[UNIX_DIAG_SHUTDOWN]);
printf(" %c-%c", mask & 1 ? '-' : '<', mask & 2 ? '-' : '>');
}
}
}
if (tb[PACKET_DIAG_UID])
- stat.uid = *(__u32 *)RTA_DATA(tb[PACKET_DIAG_UID]);
+ stat.uid = rta_getattr_u32(tb[PACKET_DIAG_UID]);
if (tb[PACKET_DIAG_RX_RING])
ring_rx = RTA_DATA(tb[PACKET_DIAG_RX_RING]);
if (tb[PACKET_DIAG_FANOUT]) {
has_fanout = true;
- fanout = *(uint32_t *)RTA_DATA(tb[PACKET_DIAG_FANOUT]);
+ fanout = rta_getattr_u32(tb[PACKET_DIAG_FANOUT]);
}
if (packet_stats_print(&stat, f))
if (tb[TCA_ROUTE4_FROM])
fprintf(f, "from %s ", rtnl_rtrealm_n2a(rta_getattr_u32(tb[TCA_ROUTE4_FROM]), b1, sizeof(b1)));
if (tb[TCA_ROUTE4_IIF])
- fprintf(f, "fromif %s", ll_index_to_name(*(int *)RTA_DATA(tb[TCA_ROUTE4_IIF])));
+ fprintf(f, "fromif %s", ll_index_to_name(rta_getattr_u32(tb[TCA_ROUTE4_IIF])));
if (tb[TCA_ROUTE4_POLICE])
tc_print_police(f, tb[TCA_ROUTE4_POLICE]);
if (tb[TCA_ROUTE4_ACT])