/* if_loop.c 6.1 83/07/29 */
* Loopback interface driver for protocol testing and timing.
#include "../net/netisr.h"
#include "../net/route.h"
#include "../netinet/in.h"
#include "../netinet/in_systm.h"
#include "../netinet/ip.h"
#include "../netinet/ip_var.h"
#define LOHOST 1 /* can't be 0, that's broadcast */
int looutput(), loioctl();
register struct ifnet
*ifp
= &loif
;
register struct sockaddr_in
*sin
;
ifp
->if_host
[0] = LOHOST
;
sin
= (struct sockaddr_in
*)&ifp
->if_addr
;
sin
->sin_family
= AF_INET
;
sin
->sin_addr
= if_makeaddr(LONET
, LOHOST
);
ifp
->if_flags
= IFF_UP
| IFF_RUNNING
;
ifp
->if_output
= looutput
;
register struct ifqueue
*ifq
;
switch (dst
->sa_family
) {
printf("lo%d: can't handle af%d\n", ifp
->if_unit
,
* Process an ioctl request.
register struct ifnet
*ifp
;
struct ifreq
*ifr
= (struct ifreq
*)data
;
int s
= splimp(), error
= 0;
if (ifp
->if_flags
& IFF_RUNNING
)
if_rtinit(ifp
, -1); /* delete previous route */
ifp
->if_addr
= ifr
->ifr_addr
;
sin
= (struct sockaddr_in
*)&ifp
->if_addr
;
ifp
->if_net
= in_netof(sin
->sin_addr
);
ifp
->if_host
[0] = in_lnaof(sin
->sin_addr
);