+
+ es->es_if.if_unit = ui->ui_unit;
+ es->es_if.if_name = "en";
+ es->es_if.if_mtu = ENMTU;
+ es->es_if.if_net = ui->ui_flags & 0xff;
+ es->es_if.if_host[0] =
+ (~(((struct endevice *)eninfo[ui->ui_unit]->ui_addr)->en_addr)) & 0xff;
+ sin = (struct sockaddr_in *)&es->es_if.if_addr;
+ sin->sin_family = AF_INET;
+ sin->sin_addr = if_makeaddr(es->es_if.if_net, es->es_if.if_host[0]);
+ sin = (struct sockaddr_in *)&es->es_if.if_broadaddr;
+ sin->sin_family = AF_INET;
+ sin->sin_addr = if_makeaddr(es->es_if.if_net, 0);
+ es->es_if.if_flags = IFF_BROADCAST;
+ es->es_if.if_init = eninit;
+ es->es_if.if_output = enoutput;
+ es->es_if.if_ubareset = enreset;
+ es->es_ifuba.ifu_flags = UBA_NEEDBDP | UBA_NEED16;
+ if_attach(&es->es_if);
+#if NIMP == 0
+ /* here's one for you john baby.... */
+ enlhinit((ui->ui_flags &~ 0xff) | 0x0a);
+#endif
+}
+
+/*
+ * Reset of interface after UNIBUS reset.
+ * If interface is on specified uba, reset its state.
+ */
+enreset(unit, uban)
+ int unit, uban;
+{
+ register struct uba_device *ui;
+COUNT(ENRESET);
+
+ if (unit >= NEN || (ui = eninfo[unit]) == 0 || ui->ui_alive == 0 ||
+ ui->ui_ubanum != uban)
+ return;
+ printf(" en%d", unit);
+ eninit(unit);