| version 1.27, 1996/05/23 16:12:15 |
version 1.28, 1996/05/23 17:03:27 |
| Line 312 rip_usrreq(so, req, m, nam, control, p) |
|
| Line 312 rip_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("rip_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 415 rip_usrreq(so, req, m, nam, control, p) |
|
| Line 414 rip_usrreq(so, req, m, nam, control, p) |
|
| * routine handles any massaging necessary. |
* routine handles any massaging necessary. |
| */ |
*/ |
| case PRU_SEND: |
case PRU_SEND: |
| { |
if (control && control->m_len) { |
| struct in_addr faddr; |
m_freem(control); |
| |
m_freem(m); |
| |
error = EINVAL; |
| |
break; |
| |
} |
| |
{ |
| if (nam) { |
if (nam) { |
| if ((so->so_state & SS_ISCONNECTED) != 0) { |
if ((so->so_state & SS_ISCONNECTED) != 0) { |
| m_freem(m); |
|
| error = EISCONN; |
error = EISCONN; |
| break; |
goto die; |
| } |
} |
| error = rip_connect(inp, nam); |
error = rip_connect(inp, nam); |
| if (error) { |
if (error) { |
| |
die: |
| m_freem(m); |
m_freem(m); |
| break; |
break; |
| } |
} |
| } else { |
} else { |
| if ((so->so_state & SS_ISCONNECTED) == 0) { |
if ((so->so_state & SS_ISCONNECTED) == 0) { |
| m_freem(m); |
|
| error = ENOTCONN; |
error = ENOTCONN; |
| break; |
goto die; |
| } |
} |
| } |
} |
| error = rip_output(m, inp); |
error = rip_output(m, inp); |
| if (nam) |
if (nam) |
| rip_disconnect(inp); |
rip_disconnect(inp); |
| |
} |
| break; |
break; |
| } |
|
| |
|
| case PRU_SENSE: |
case PRU_SENSE: |
| /* |
/* |
| Line 454 rip_usrreq(so, req, m, nam, control, p) |
|
| Line 456 rip_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; |