version 1.97, 2006/09/07 02:40:33 |
version 1.97.2.2, 2007/01/12 01:04:12 |
|
|
*/ |
*/ |
static int |
static int |
sppp_output(struct ifnet *ifp, struct mbuf *m, |
sppp_output(struct ifnet *ifp, struct mbuf *m, |
struct sockaddr *dst, struct rtentry *rt) |
struct sockaddr *dst, struct rtentry *rt) |
{ |
{ |
struct sppp *sp = (struct sppp *) ifp; |
struct sppp *sp = (struct sppp *) ifp; |
struct ppp_header *h = NULL; |
struct ppp_header *h = NULL; |
Line 1032 sppp_dequeue(struct ifnet *ifp) |
|
Line 1032 sppp_dequeue(struct ifnet *ifp) |
|
int |
int |
sppp_ioctl(struct ifnet *ifp, u_long cmd, void *data) |
sppp_ioctl(struct ifnet *ifp, u_long cmd, void *data) |
{ |
{ |
|
struct lwp *l = curlwp; /* XXX */ |
struct ifreq *ifr = (struct ifreq *) data; |
struct ifreq *ifr = (struct ifreq *) data; |
struct sppp *sp = (struct sppp *) ifp; |
struct sppp *sp = (struct sppp *) ifp; |
int s, error=0, going_up, going_down, newmode; |
int s, error=0, going_up, going_down, newmode; |
Line 1108 sppp_ioctl(struct ifnet *ifp, u_long cmd |
|
Line 1109 sppp_ioctl(struct ifnet *ifp, u_long cmd |
|
break; |
break; |
|
|
case SPPPSETAUTHCFG: |
case SPPPSETAUTHCFG: |
case SPPPGETAUTHCFG: |
|
case SPPPSETLCPCFG: |
case SPPPSETLCPCFG: |
case SPPPGETLCPCFG: |
|
case SPPPSETIDLETO: |
case SPPPSETIDLETO: |
case SPPPSETAUTHFAILURE: |
case SPPPSETAUTHFAILURE: |
case SPPPGETAUTHFAILURES: |
|
case SPPPSETDNSOPTS: |
case SPPPSETDNSOPTS: |
case SPPPSETKEEPALIVE: |
case SPPPSETKEEPALIVE: |
{ |
error = kauth_authorize_network(l->l_cred, |
struct lwp *l = curlwp; /* XXX */ |
KAUTH_NETWORK_INTERFACE, |
|
KAUTH_REQ_NETWORK_INTERFACE_SETPRIV, ifp, (void *)cmd, |
|
NULL); |
|
if (error) |
|
break; |
|
error = sppp_params(sp, cmd, data); |
|
break; |
|
|
if ((error = kauth_authorize_generic(l->l_cred, |
case SPPPGETAUTHCFG: |
KAUTH_GENERIC_ISSUSER, &l->l_acflag)) != 0) |
case SPPPGETLCPCFG: |
|
case SPPPGETAUTHFAILURES: |
|
error = kauth_authorize_network(l->l_cred, |
|
KAUTH_NETWORK_INTERFACE, |
|
KAUTH_REQ_NETWORK_INTERFACE_GETPRIV, ifp, (void *)cmd, |
|
NULL); |
|
if (error) |
break; |
break; |
} |
error = sppp_params(sp, cmd, data); |
/* FALLTHROUGH */ |
break; |
|
|
case SPPPGETSTATUS: |
case SPPPGETSTATUS: |
case SPPPGETSTATUSNCP: |
case SPPPGETSTATUSNCP: |
case SPPPGETIDLETO: |
case SPPPGETIDLETO: |
Line 2135 sppp_lcp_RCR(struct sppp *sp, struct lcp |
|
Line 2146 sppp_lcp_RCR(struct sppp *sp, struct lcp |
|
/* Sanity check option length */ |
/* Sanity check option length */ |
if (p[1] > len) { |
if (p[1] > len) { |
/* |
/* |
* Malicious option - drop imediately. |
* Malicious option - drop immediately. |
* XXX Maybe we should just RXJ it? |
* XXX Maybe we should just RXJ it? |
*/ |
*/ |
addlog("%s: received malicious LCP option 0x%02x, " |
addlog("%s: received malicious LCP option 0x%02x, " |
Line 2366 sppp_lcp_RCN_rej(struct sppp *sp, struct |
|
Line 2377 sppp_lcp_RCN_rej(struct sppp *sp, struct |
|
/* Sanity check option length */ |
/* Sanity check option length */ |
if (p[1] > len) { |
if (p[1] > len) { |
/* |
/* |
* Malicious option - drop imediately. |
* Malicious option - drop immediately. |
* XXX Maybe we should just RXJ it? |
* XXX Maybe we should just RXJ it? |
*/ |
*/ |
addlog("%s: received malicious LCP option, " |
addlog("%s: received malicious LCP option, " |
Line 2441 sppp_lcp_RCN_nak(struct sppp *sp, struct |
|
Line 2452 sppp_lcp_RCN_nak(struct sppp *sp, struct |
|
/* Sanity check option length */ |
/* Sanity check option length */ |
if (p[1] > len) { |
if (p[1] > len) { |
/* |
/* |
* Malicious option - drop imediately. |
* Malicious option - drop immediately. |
* XXX Maybe we should just RXJ it? |
* XXX Maybe we should just RXJ it? |
*/ |
*/ |
addlog("%s: received malicious LCP option, " |
addlog("%s: received malicious LCP option, " |
Line 3711 sppp_ipv6cp_scr(struct sppp *sp) |
|
Line 3722 sppp_ipv6cp_scr(struct sppp *sp) |
|
sppp_cp_send(sp, PPP_IPV6CP, CONF_REQ, sp->confid[IDX_IPV6CP], i, &opt); |
sppp_cp_send(sp, PPP_IPV6CP, CONF_REQ, sp->confid[IDX_IPV6CP], i, &opt); |
} |
} |
#else /*INET6*/ |
#else /*INET6*/ |
static void sppp_ipv6cp_init(struct sppp *sp) |
static void |
|
sppp_ipv6cp_init(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_up(struct sppp *sp) |
static void |
|
sppp_ipv6cp_up(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_down(struct sppp *sp) |
static void |
|
sppp_ipv6cp_down(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
|
static void |
static void sppp_ipv6cp_open(struct sppp *sp) |
sppp_ipv6cp_open(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_close(struct sppp *sp) |
static void |
|
sppp_ipv6cp_close(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_TO(void *sp) |
static void |
|
sppp_ipv6cp_TO(void *sp) |
{ |
{ |
} |
} |
|
|
static int sppp_ipv6cp_RCR(struct sppp *sp, struct lcp_header *h, int len) |
static int |
|
sppp_ipv6cp_RCR(struct sppp *sp, struct lcp_header *h, |
|
int len) |
{ |
{ |
return 0; |
return 0; |
} |
} |
|
|
static void sppp_ipv6cp_RCN_rej(struct sppp *sp, struct lcp_header *h, int len) |
static void |
|
sppp_ipv6cp_RCN_rej(struct sppp *sp, struct lcp_header *h, |
|
int len) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_RCN_nak(struct sppp *sp, struct lcp_header *h, int len) |
static void |
|
sppp_ipv6cp_RCN_nak(struct sppp *sp, struct lcp_header *h, |
|
int len) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_tlu(struct sppp *sp) |
static void |
|
sppp_ipv6cp_tlu(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_tld(struct sppp *sp) |
static void |
|
sppp_ipv6cp_tld(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_tls(struct sppp *sp) |
static void |
|
sppp_ipv6cp_tls(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_tlf(struct sppp *sp) |
static void |
|
sppp_ipv6cp_tlf(struct sppp *sp) |
{ |
{ |
} |
} |
|
|
static void sppp_ipv6cp_scr(struct sppp *sp) |
static void |
|
sppp_ipv6cp_scr(struct sppp *sp) |
{ |
{ |
} |
} |
#endif /*INET6*/ |
#endif /*INET6*/ |
Line 4775 sppp_keepalive(void *dummy) |
|
Line 4802 sppp_keepalive(void *dummy) |
|
/* And now prepare LCP to reestablish the link, if configured to do so. */ |
/* And now prepare LCP to reestablish the link, if configured to do so. */ |
sppp_cp_change_state(&lcp, sp, STATE_STOPPED); |
sppp_cp_change_state(&lcp, sp, STATE_STOPPED); |
|
|
/* Close connection imediatly, completition of this |
/* Close connection immediately, completition of this |
* will summon the magic needed to reestablish it. */ |
* will summon the magic needed to reestablish it. */ |
if (sp->pp_tlf) |
if (sp->pp_tlf) |
sp->pp_tlf(sp); |
sp->pp_tlf(sp); |