- gate = (struct sockaddr *)
- (ROUNDUP(rt->rt_gateway->sa_len)
- + (char *)dst);
- Bcopy(&rt->rt_gateway, gate,
- rt->rt_gateway->sa_len);
- rtm->rtm_flags = rt->rt_flags;
- if (netmask) {
- outmask = (struct sockaddr *)
- (ROUNDUP(netmask->sa_len)+(char *)gate);
- Bcopy(netmask, outmask, netmask->sa_len);
- }
+ }
+ rtm->rtm_msglen = len;
+ rtm->rtm_flags = rt->rt_flags;
+ rtm->rtm_rmx = rt->rt_rmx;
+ cp = (caddr_t) (1 + rtm);
+ len = ROUNDUP(dst->sa_len);
+ Bcopy(dst, cp, len); cp += len;
+ if (gate) {
+ len = ROUNDUP(gate->sa_len);
+ Bcopy(gate, cp, len); cp += len;
+ }
+ if (netmask) {
+ len = ROUNDUP(netmask->sa_len);
+ Bcopy(netmask, cp, len); cp += len;
+ }
+ if (genmask) {
+ len = ROUNDUP(genmask->sa_len);
+ Bcopy(genmask, cp, len); cp += len;
+ }
+ if (ifpaddr) {
+ len = ROUNDUP(ifpaddr->sa_len);
+ Bcopy(ifpaddr, cp, len); cp += len;
+ len = ROUNDUP(ifaaddr->sa_len);
+ Bcopy(ifaaddr, cp, len); cp += len;