struct ifreq req = { .ifr_ifindex = ifindex, };
int fd = socket(PF_LOCAL, SOCK_DGRAM, 0);
- if (ioctl(fd, SIOCGIFNAME, &req) ||
- ioctl(fd, SIOCGIFFLAGS, &req))
+ if (ioctl(fd, SIOCGIFNAME, &req)
+ || ioctl(fd, SIOCGIFFLAGS, &req))
goto error;
+
req.ifr_flags |= IFF_UP | IFF_RUNNING;
ioctl(fd, SIOCSIFFLAGS, &req);
error:
/* If Phonet is absent, kernel transmits other families... */
if (ifa->ifa_family != AF_PHONET)
return;
+
if (ifa->ifa_index != self->interface)
return;
for (rta = IFA_RTA(ifa); RTA_OK(rta, len); rta = RTA_NEXT(rta, len)) {
+
if (rta->rta_type == IFA_LOCAL)
local = *(uint8_t *)RTA_DATA(rta);
else if (rta->rta_type == IFA_ADDRESS)
st = PN_LINK_UP;
for (rta = IFLA_RTA(ifi); RTA_OK(rta, len);
- rta = RTA_NEXT(rta, len)) {
+ rta = RTA_NEXT(rta, len)) {
+
if (rta->rta_type == IFLA_IFNAME)
ifname = RTA_DATA(rta);
}
if (ifname && idx)
self->callback(idx, st, ifname, self->opaque);
+
+#undef UP
}
/* Parser Netlink messages */
struct nlmsghdr nlh;
char buf[SIZE_NLMSG];
} resp;
- struct iovec iov = { &resp, (sizeof resp), };
+ struct iovec iov = { &resp, sizeof(resp), };
struct msghdr msg = { .msg_iov = &iov, .msg_iovlen = 1, };
ssize_t ret;
struct nlmsghdr *nlh;
if (msg.msg_flags & MSG_TRUNC) {
g_printerr("Netlink message of %zu bytes truncated at %zu\n",
- ret, sizeof(resp));
+ ret, sizeof(resp));
return TRUE;
}
struct nlmsgerr *err = NLMSG_DATA(nlh);
if (err->error)
g_printerr("Netlink error: %s",
- strerror(-err->error));
+ strerror(-err->error));
return TRUE;
}
case RTM_NEWADDR:
} req = {
.nlh = {
.nlmsg_type = RTM_GETLINK,
- .nlmsg_len = sizeof req,
+ .nlmsg_len = sizeof(req),
.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT | NLM_F_MATCH,
.nlmsg_pid = getpid(),
},
struct sockaddr_nl addr = { .nl_family = AF_NETLINK, };
- return sendto(fd, &req, (sizeof req), 0,
+ return sendto(fd, &req, sizeof(req), 0,
(struct sockaddr *)&addr, sizeof(addr));
}
{
struct ifaddrmsg *ifa;
struct rtattr *rta;
- uint32_t reqlen = NLMSG_LENGTH(NLMSG_ALIGN(sizeof *ifa) + RTA_SPACE(1));
+ uint32_t reqlen = NLMSG_LENGTH(NLMSG_ALIGN(sizeof(*ifa))
+ + RTA_SPACE(1));
struct req {
struct nlmsghdr nlh;
char buf[512];
{
struct rtmsg *rtm;
struct rtattr *rta;
- uint32_t reqlen = NLMSG_LENGTH(NLMSG_ALIGN(sizeof *rtm) +
+ uint32_t reqlen = NLMSG_LENGTH(NLMSG_ALIGN(sizeof(*rtm)) +
RTA_SPACE(1) +
- RTA_SPACE(sizeof ifa_index));
+ RTA_SPACE(sizeof(ifa_index)));
struct req {
struct nlmsghdr nlh;
char buf[512];