int pf_inet6_fd;
};
+struct rtm
+{
+ struct rt_msghdr hdr;
+ char buffer[sizeof(struct sockaddr_storage) * RTAX_MAX];
+};
+
int
if_init(__unused struct interface *iface)
{
if_route(unsigned char cmd, const struct rt *rt)
{
struct dhcpcd_ctx *ctx;
- struct rtm
- {
- struct rt_msghdr hdr;
- char buffer[sizeof(struct sockaddr_storage) * RTAX_MAX];
- } rtmsg;
+ struct rtm rtmsg;
struct rt_msghdr *rtm = &rtmsg.hdr;
char *bp = rtmsg.buffer;
struct sockaddr_dl sdl;
int
if_handlelink(struct dhcpcd_ctx *ctx)
{
- union {
- struct rt_msghdr rtmsg;
- unsigned char buf[2048];
- } u;
- struct iovec iov = { .iov_base = u.buf, .iov_len = sizeof(u) };
+ struct rtm rtm;
+ struct iovec iov = { .iov_base = &rtm, .iov_len = sizeof(rtm) };
struct msghdr msg = { .msg_iov = &iov, .msg_iovlen = 1 };
ssize_t len;
if (len == -1)
return -1;
if (len != 0)
- if_dispatch(ctx, &u.rtmsg);
+ if_dispatch(ctx, &rtm.hdr);
return 0;
}