version 1.28, 1996/05/23 17:03:27 |
version 1.29, 1996/05/24 19:03:13 |
Line 263 rip_ctloutput(op, so, level, optname, m) |
|
Line 263 rip_ctloutput(op, so, level, optname, m) |
|
} |
} |
|
|
int |
int |
|
rip_bind(inp, nam) |
|
struct inpcb *inp; |
|
struct mbuf *nam; |
|
{ |
|
struct sockaddr_in *addr = mtod(nam, struct sockaddr_in *); |
|
|
|
if (nam->m_len != sizeof(*addr)) |
|
return (EINVAL); |
|
if (ifnet.tqh_first == 0) |
|
return (EADDRNOTAVAIL); |
|
if (addr->sin_family != AF_INET && |
|
addr->sin_family != AF_IMPLINK) |
|
return (EAFNOSUPPORT); |
|
if (addr->sin_addr.s_addr != INADDR_ANY && |
|
ifa_ifwithaddr(sintosa(addr)) == 0) |
|
return (EADDRNOTAVAIL); |
|
inp->inp_laddr = addr->sin_addr; |
|
return (0); |
|
} |
|
|
|
int |
rip_connect(inp, nam) |
rip_connect(inp, nam) |
struct inpcb *inp; |
struct inpcb *inp; |
struct mbuf *nam; |
struct mbuf *nam; |
Line 353 rip_usrreq(so, req, m, nam, control, p) |
|
Line 374 rip_usrreq(so, req, m, nam, control, p) |
|
break; |
break; |
|
|
case PRU_BIND: |
case PRU_BIND: |
{ |
error = rip_bind(inp, nam); |
struct sockaddr_in *addr = mtod(nam, struct sockaddr_in *); |
|
|
|
if (nam->m_len != sizeof(*addr)) { |
|
error = EINVAL; |
|
break; |
|
} |
|
if (ifnet.tqh_first == 0) { |
|
error = EADDRNOTAVAIL; |
|
break; |
|
} |
|
if (addr->sin_family != AF_INET && |
|
addr->sin_family != AF_IMPLINK) { |
|
error = EAFNOSUPPORT; |
|
break; |
|
} |
|
if (addr->sin_addr.s_addr != INADDR_ANY && |
|
ifa_ifwithaddr(sintosa(addr)) == 0) { |
|
error = EADDRNOTAVAIL; |
|
break; |
|
} |
|
inp->inp_laddr = addr->sin_addr; |
|
break; |
break; |
} |
|
|
|
case PRU_LISTEN: |
case PRU_LISTEN: |
error = EOPNOTSUPP; |
error = EOPNOTSUPP; |