Mercurial > hg > dhcpcd
changeset 4437:5f768f1d37ad draft
BSD: Simplify rtm usage
| author | Roy Marples <roy@marples.name> |
|---|---|
| date | Mon, 15 Apr 2019 12:39:07 +0100 |
| parents | 52c29572025b |
| children | fea97b24d884 |
| files | src/if-bsd.c |
| diffstat | 1 files changed, 10 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/if-bsd.c Mon Apr 15 14:30:14 2019 +0300 +++ b/src/if-bsd.c Mon Apr 15 12:39:07 2019 +0100 @@ -107,6 +107,12 @@ 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) { @@ -462,11 +468,7 @@ 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; @@ -1258,11 +1260,8 @@ 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; @@ -1270,7 +1269,7 @@ if (len == -1) return -1; if (len != 0) - if_dispatch(ctx, &u.rtmsg); + if_dispatch(ctx, &rtm.hdr); return 0; }
