diff options
author | glebius <glebius@FreeBSD.org> | 2004-07-29 05:59:43 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2004-07-29 05:59:43 +0000 |
commit | 0a36b82adc4660322dc9d1423fa8966917e60ed2 (patch) | |
tree | eaa6e0147ffbfccf0e0eff48aa2ec055f554cb13 /usr.sbin/ppp/ether.c | |
parent | 989082ba5990c7f8edd9f7f0df8215b27e0741b8 (diff) | |
download | FreeBSD-src-0a36b82adc4660322dc9d1423fa8966917e60ed2.zip FreeBSD-src-0a36b82adc4660322dc9d1423fa8966917e60ed2.tar.gz |
Add configuration option "set pppoe [standard|3Com]" which allows
to configure mode for ng_pppoe(4) node under control.
Reviewed by: brian
Approved by: julian (mentor)
Diffstat (limited to 'usr.sbin/ppp/ether.c')
-rw-r--r-- | usr.sbin/ppp/ether.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/usr.sbin/ppp/ether.c b/usr.sbin/ppp/ether.c index 77ad7e5..ce0bfd2 100644 --- a/usr.sbin/ppp/ether.c +++ b/usr.sbin/ppp/ether.c @@ -443,7 +443,7 @@ ether_Create(struct physical *p) struct ng_mesg *resp; const struct hooklist *hlist; const struct nodeinfo *ninfo; - char *path, *sessionid; + char *path, *sessionid, *mode; int ifacelen, f; dev = NULL; @@ -621,6 +621,19 @@ ether_Create(struct physical *p) log_Printf(LogWARN, "%s: Failed to set the IFF_UP flag on %s\n", p->link.name, path); + snprintf(connectpath, sizeof connectpath, ".:%s", dev->hook); + + /* Configure node to 3Com mode if needed */ + if (p->cfg.pppoe_configured) { + mode = p->cfg.nonstandard_pppoe ? NG_PPPOE_NONSTANDARD : NG_PPPOE_STANDARD; + if (NgSendMsg(dev->cs, connectpath, NGM_PPPOE_COOKIE, + NGM_PPPOE_SETMODE, mode, strlen(mode) + 1) == -1) { + log_Printf(LogWARN, "``%s'': Cannot configure netgraph node: %s\n", + connectpath, strerror(errno)); + return ether_Abandon(dev, p); + } + } + /* And finally, request a connection to the given provider */ data = (struct ngpppoe_init_data *)alloca(sizeof *data + providerlen); @@ -628,7 +641,6 @@ ether_Create(struct physical *p) memcpy(data->data, provider, providerlen); data->data_len = providerlen; - snprintf(connectpath, sizeof connectpath, ".:%s", dev->hook); log_Printf(LogDEBUG, "Sending PPPOE_CONNECT to %s\n", connectpath); if (NgSendMsg(dev->cs, connectpath, NGM_PPPOE_COOKIE, NGM_PPPOE_CONNECT, data, sizeof *data + providerlen) == -1) { |