-#ifdef COMPAT_43
- if (nfs_diskless.mygateway.sa_family == AF_INET) {
- struct ortentry rt;
- struct sockaddr_in *sin;
-
- sin = (struct sockaddr_in *) &rt.rt_dst;
- sin->sin_len = sizeof (struct sockaddr_in);
- sin->sin_family = AF_INET;
- sin->sin_addr.s_addr = 0; /* default */
- bcopy((caddr_t)&nfs_diskless.mygateway, (caddr_t)&rt.rt_gateway,
- sizeof (struct sockaddr_in));
- rt.rt_flags = (RTF_UP | RTF_GATEWAY);
- if (rtioctl(SIOCADDRT, (caddr_t)&rt))
+ if (nfs_diskless.mygateway.sin_len != 0) {
+ struct sockaddr_in sin;
+ extern struct sockaddr_in icmpmask;
+
+ sin.sin_len = sizeof (struct sockaddr_in);
+ sin.sin_family = AF_INET;
+ sin.sin_addr.s_addr = 0; /* default */
+ in_sockmaskof(sin.sin_addr, &icmpmask);
+ if (rtrequest(RTM_ADD, (struct sockaddr *)&sin,
+ (struct sockaddr *)&nfs_diskless.mygateway,
+ (struct sockaddr *)&icmpmask,
+ RTF_UP | RTF_GATEWAY, (struct rtentry **)0))