-void odhcpd_setup_route(const struct in6_addr *addr, int prefixlen,
- const struct interface *iface, const struct in6_addr *gw,
- int metric, bool add)
-{
- struct req {
- struct nlmsghdr nh;
- struct rtmsg rtm;
- struct rtattr rta_dst;
- struct in6_addr dst_addr;
- struct rtattr rta_oif;
- uint32_t ifindex;
- struct rtattr rta_table;
- uint32_t table;
- struct rtattr rta_prio;
- uint32_t prio;
- struct rtattr rta_gw;
- struct in6_addr gw;
- } req = {
- {sizeof(req), 0, NLM_F_REQUEST, ++rtnl_seq, 0},
- {AF_INET6, prefixlen, 0, 0, 0, 0, 0, 0, 0},
- {sizeof(struct rtattr) + sizeof(struct in6_addr), RTA_DST},
- *addr,
- {sizeof(struct rtattr) + sizeof(uint32_t), RTA_OIF},
- iface->ifindex,
- {sizeof(struct rtattr) + sizeof(uint32_t), RTA_TABLE},
- RT_TABLE_MAIN,
- {sizeof(struct rtattr) + sizeof(uint32_t), RTA_PRIORITY},
- metric,
- {sizeof(struct rtattr) + sizeof(struct in6_addr), RTA_GATEWAY},
- IN6ADDR_ANY_INIT,
- };