| version 1.31, 1996/05/23 16:22:32 |
version 1.32, 1996/05/23 17:03:31 |
| Line 494 udp_usrreq(so, req, m, nam, control, p) |
|
| Line 494 udp_usrreq(so, req, m, nam, control, p) |
|
| |
|
| s = splsoftnet(); |
s = splsoftnet(); |
| inp = sotoinpcb(so); |
inp = sotoinpcb(so); |
| if (control && control->m_len) { |
#ifdef DIAGNOSTIC |
| m_freem(control); |
if (req != PRU_SEND && req != PRU_SENDOOB && control) |
| error = EINVAL; |
panic("udp_usrreq: unexpected control mbuf"); |
| goto release; |
#endif |
| } |
|
| if (inp == 0 && req != PRU_ATTACH) { |
if (inp == 0 && req != PRU_ATTACH) { |
| error = EINVAL; |
error = EINVAL; |
| goto release; |
goto release; |
| Line 566 udp_usrreq(so, req, m, nam, control, p) |
|
| Line 565 udp_usrreq(so, req, m, nam, control, p) |
|
| break; |
break; |
| |
|
| case PRU_SEND: |
case PRU_SEND: |
| |
if (control && control->m_len) { |
| |
m_freem(control); |
| |
m_freem(m); |
| |
error = EINVAL; |
| |
break; |
| |
} |
| { |
{ |
| struct in_addr laddr; |
struct in_addr laddr; |
| |
|
| Line 573 udp_usrreq(so, req, m, nam, control, p) |
|
| Line 578 udp_usrreq(so, req, m, nam, control, p) |
|
| laddr = inp->inp_laddr; |
laddr = inp->inp_laddr; |
| if ((so->so_state & SS_ISCONNECTED) != 0) { |
if ((so->so_state & SS_ISCONNECTED) != 0) { |
| error = EISCONN; |
error = EISCONN; |
| break; |
goto die; |
| } |
} |
| error = in_pcbconnect(inp, nam); |
error = in_pcbconnect(inp, nam); |
| if (error) |
if (error) { |
| |
die: |
| |
m_freem(m); |
| break; |
break; |
| |
} |
| } else { |
} else { |
| if ((so->so_state & SS_ISCONNECTED) == 0) { |
if ((so->so_state & SS_ISCONNECTED) == 0) { |
| error = ENOTCONN; |
error = ENOTCONN; |
| break; |
goto die; |
| } |
} |
| } |
} |
| error = udp_output(m, control, inp); |
error = udp_output(m, control, inp); |
| Line 604 udp_usrreq(so, req, m, nam, control, p) |
|
| Line 612 udp_usrreq(so, req, m, nam, control, p) |
|
| break; |
break; |
| |
|
| case PRU_SENDOOB: |
case PRU_SENDOOB: |
| |
m_freem(control); |
| m_freem(m); |
m_freem(m); |
| error = EOPNOTSUPP; |
error = EOPNOTSUPP; |
| break; |
break; |