- sin->sin_addr.s_addr = addr;
- ifp->if_net = sin->sin_addr.s_net;
- ifp->if_flags = IFF_UP|IFF_POINTOPOINT;
- ifp->if_dstaddr = esifp->if_addr;
- ifp->if_output = looutput;
- if_attach(ifp);
- rtinit(&ifp->if_addr, &ifp->if_addr, RTF_UP|RTF_DIRECT|RTF_HOST);
+ sin->sin_addr = if_makeaddr(ifp->if_net,
+ ((struct en_softc *)ifp)->es_host);
+ sin = (struct sockaddr_in *)&ifp->if_broadaddr;
+ sin->sin_family = AF_INET;
+ sin->sin_addr = if_makeaddr(ifp->if_net, INADDR_ANY);
+ ifp->if_flags |= IFF_BROADCAST;
+}
+
+#ifdef ENF_SWABIPS
+/*
+ * Swab bytes
+ * Jeffrey Mogul, Stanford
+ */
+enswab(from, to, n)
+ register caddr_t *from, *to;
+ register int n;
+{
+ register unsigned long temp;
+
+ n >>= 1; n++;
+#define STEP temp = *from++,*to++ = *from++,*to++ = temp
+ /* round to multiple of 8 */
+ while ((--n) & 07)
+ STEP;
+ n >>= 3;
+ while (--n >= 0) {
+ STEP; STEP; STEP; STEP;
+ STEP; STEP; STEP; STEP;
+ }