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
symbolic links
[unix-history]
/
usr
/
src
/
sys
/
netinet
/
in_pcb.c
diff --git
a/usr/src/sys/netinet/in_pcb.c
b/usr/src/sys/netinet/in_pcb.c
index
c79eea0
..
b62bc78
100644
(file)
--- a/
usr/src/sys/netinet/in_pcb.c
+++ b/
usr/src/sys/netinet/in_pcb.c
@@
-1,4
+1,4
@@
-/*
in_pcb.c 4.13 81/12/11
*/
+/*
in_pcb.c 4.16 82/02/15
*/
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
@@
-66,18
+66,20
@@
COUNT(IN_PCBATTACH);
if (sin) {
if (sin->sin_family != AF_INET)
return (EAFNOSUPPORT);
if (sin) {
if (sin->sin_family != AF_INET)
return (EAFNOSUPPORT);
+ if (ifnet && sin->sin_addr.s_addr == 0)
+ sin->sin_addr = ifnet->if_addr;
ifp = if_ifwithaddr(sin->sin_addr);
ifp = if_ifwithaddr(sin->sin_addr);
- if (ifp == 0)
- return (EADDRNOTAVAIL);
lport = sin->sin_port;
if (lport &&
in_pcblookup(head, zeroin_addr, 0, sin->sin_addr, lport))
return (EADDRINUSE);
} else {
lport = sin->sin_port;
if (lport &&
in_pcblookup(head, zeroin_addr, 0, sin->sin_addr, lport))
return (EADDRINUSE);
} else {
- ifp = if
_ifwithaddr(ifnet->if_addr)
;
+ ifp = if
net
;
lport = 0;
}
lport = 0;
}
- m = m_getclr(0);
+ if (ifp == 0)
+ return (EADDRNOTAVAIL);
+ m = m_getclr(M_DONTWAIT);
if (m == 0)
return (ENOBUFS);
if (sbreserve(&so->so_snd, sndcc) == 0)
if (m == 0)
return (ENOBUFS);
if (sbreserve(&so->so_snd, sndcc) == 0)
@@
-128,6
+130,17
@@
COUNT(IN_PCBCONNECT);
return (0);
}
return (0);
}
+in_pcbconnaddr(inp, sp)
+ struct inpcb *inp;
+ struct sockaddr *sp;
+{
+ register struct sockaddr_in *sin = (struct sockaddr_in *)sp;
+
+ sin->sin_family = AF_INET;
+ sin->sin_port = inp->inp_fport;
+ sin->sin_addr = inp->inp_faddr;
+}
+
in_pcbdisconnect(inp)
struct inpcb *inp;
{
in_pcbdisconnect(inp)
struct inpcb *inp;
{