rtmsg
int rtmsg(int, int, int, uint8_t);
ret = rtmsg(cmd, 0, 0, 0);
if ((ret = rtmsg(*cmd, flags, fmask, prio)) == 0)
return (rtmsg(RTM_ADD));
if (rtmsg(RTM_DELETE))
if (rtmsg(RTM_GET) < 0)
int rtmsg(int);
int rtmsg(int);
return (rtmsg(RTM_ADD));
if (rtmsg(RTM_DELETE))
if (rtmsg(RTM_GET) < 0)
} rtmsg;
memset(&rtmsg, 0, sizeof(rtmsg));
rtmsg.hdr.rtm_type = cmd == 's'? RTM_ADD: RTM_DELETE;
rtmsg.hdr.rtm_flags = RTF_UP | RTF_GATEWAY;
rtmsg.hdr.rtm_version = RTM_VERSION;
rtmsg.hdr.rtm_tableid = getrtableid();
rtmsg.hdr.rtm_seq = ++rtm_seq;
rtmsg.hdr.rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
rtmsg.dst.sin_len = sizeof(rtmsg.dst);
rtmsg.dst.sin_family = AF_INET;
rtmsg.gway.sin_len = sizeof(rtmsg.gway);
rtmsg.gway.sin_family = AF_INET;
rtmsg.gway.sin_addr.s_addr = g;
rtmsg.mask.sin_len = sizeof(rtmsg.mask);
rtmsg.mask.sin_family = AF_INET;
rtmsg.hdr.rtm_msglen = sizeof(rtmsg);
if (write(routes, &rtmsg, sizeof(rtmsg)) == -1) {
rt = rtmsg(RTM_ADD);
if (rtmsg(RTM_GET) < 0)
int rtmsg(int);