projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
typed mbufs
[unix-history]
/
usr
/
src
/
sys
/
net
/
if_loop.c
diff --git
a/usr/src/sys/net/if_loop.c
b/usr/src/sys/net/if_loop.c
index
8dd37fd
..
e783861
100644
(file)
--- a/
usr/src/sys/net/if_loop.c
+++ b/
usr/src/sys/net/if_loop.c
@@
-1,4
+1,4
@@
-/* if_loop.c 4.1
81/11/29
*/
+/* if_loop.c 4.1
5 82/10/13
*/
/*
* Loopback interface driver for protocol testing and timing.
/*
* Loopback interface driver for protocol testing and timing.
@@
-8,15
+8,18
@@
#include "../h/systm.h"
#include "../h/mbuf.h"
#include "../h/socket.h"
#include "../h/systm.h"
#include "../h/mbuf.h"
#include "../h/socket.h"
-#include "../net/in.h"
-#include "../net/in_systm.h"
+#include "../net
inet
/in.h"
+#include "../net
inet
/in_systm.h"
#include "../net/if.h"
#include "../net/if.h"
-#include "../net/ip.h"
-#include "../net/ip_var.h"
-#include "../h/mtpr.h"
+#include "../net/netisr.h"
+#include "../netinet/ip.h"
+#include "../netinet/ip_var.h"
+#include "../vax/mtpr.h"
+#include "../net/route.h"
+#include <errno.h>
-#define LONET
254
-#define LOMTU
1024
+#define LONET
127
+#define LOMTU
(1024+512)
struct ifnet loif;
int looutput();
struct ifnet loif;
int looutput();
@@
-24,36
+27,52
@@
int looutput();
loattach()
{
register struct ifnet *ifp = &loif;
loattach()
{
register struct ifnet *ifp = &loif;
+ register struct sockaddr_in *sin;
+ ifp->if_name = "lo";
ifp->if_mtu = LOMTU;
ifp->if_net = LONET;
ifp->if_mtu = LOMTU;
ifp->if_net = LONET;
+ sin = (struct sockaddr_in *)&ifp->if_addr;
+ sin->sin_family = AF_INET;
+ sin->sin_addr = if_makeaddr(ifp->if_net, 0);
+ ifp->if_flags = IFF_UP;
ifp->if_output = looutput;
ifp->if_output = looutput;
- if
p->if_next = ifnet
;
- if
net = ifp
;
+ if
_attach(ifp)
;
+ if
_rtinit(ifp, RTF_UP)
;
}
}
-looutput(ifp, m0,
pf
)
+looutput(ifp, m0,
dst
)
struct ifnet *ifp;
struct mbuf *m0;
struct ifnet *ifp;
struct mbuf *m0;
-
int pf
;
+
struct sockaddr *dst
;
{
int s = splimp();
{
int s = splimp();
+ register struct ifqueue *ifq;
- switch (pf) {
+ ifp->if_opackets++;
+ switch (dst->sa_family) {
#ifdef INET
#ifdef INET
- case PF_INET:
- IF_ENQUEUE(&ipintrq, m0);
- setipintr();
+ case AF_INET:
+ ifq = &ipintrq;
+ if (IF_QFULL(ifq)) {
+ IF_DROP(ifq);
+ m_freem(m0);
+ splx(s);
+ return (ENOBUFS);
+ }
+ IF_ENQUEUE(ifq, m0);
+ schednetisr(NETISR_IP);
break;
#endif
break;
#endif
-
default:
splx(s);
default:
splx(s);
- printf("lo%d: can't encapsulate pf%d\n", ifp->if_unit, pf);
+ printf("lo%d: can't handle af%d\n", ifp->if_unit,
+ dst->sa_family);
m_freem(m0);
m_freem(m0);
- return (
0
);
+ return (
EAFNOSUPPORT
);
}
}
+ ifp->if_ipackets++;
splx(s);
splx(s);
- return (
1
);
+ return (
0
);
}
}