diff options
| author | Brian Somers <brian@FreeBSD.org> | 2002-05-14 12:33:40 +0000 |
|---|---|---|
| committer | Brian Somers <brian@FreeBSD.org> | 2002-05-14 12:33:40 +0000 |
| commit | 629d0dd5e0cff524dd04a16bc2854cded8c9a64b (patch) | |
| tree | 40a303781f6f55cb413b10e1cd9805c4ae0c5e70 /libexec/pppoed | |
| parent | 348df1aa25ecba29bc5308160496f1dec309d249 (diff) | |
Notes
Diffstat (limited to 'libexec/pppoed')
| -rw-r--r-- | libexec/pppoed/pppoed.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/libexec/pppoed/pppoed.c b/libexec/pppoed/pppoed.c index 55616f18a8ed..7d7832416ba3 100644 --- a/libexec/pppoed/pppoed.c +++ b/libexec/pppoed/pppoed.c @@ -63,6 +63,7 @@ #define DEFAULT_EXEC_PREFIX "exec /usr/sbin/ppp -direct " #define HISMACADDR "HISMACADDR" +#define SESSION_ID "SESSION_ID" static void nglogx(const char *, ...) __printflike(1, 2); @@ -257,8 +258,8 @@ Spawn(const char *prog, const char *acname, const char *provider, struct ng_mesg *rep = (struct ng_mesg *)msgbuf; struct ngpppoe_sts *sts = (struct ngpppoe_sts *)(msgbuf + sizeof *rep); struct ngpppoe_init_data *data; + char env[sizeof(HISMACADDR)+18], unknown[14], sessionid[5], *path; unsigned char *macaddr; - char env[sizeof(HISMACADDR)+18], unknown[14], *path; const char *msg; int ret, slen; @@ -350,7 +351,6 @@ Spawn(const char *prog, const char *acname, const char *provider, /* Put the peer's MAC address in the environment */ if (sz >= sizeof(struct ether_header)) { - macaddr = ((struct ether_header *)request)->ether_shost; snprintf(env, sizeof(env), "%s=%x:%x:%x:%x:%x:%x", HISMACADDR, macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], @@ -411,6 +411,13 @@ Spawn(const char *prog, const char *acname, const char *provider, syslog(LOG_WARNING, "setenv: cannot set ACNAME=%s: %m", sts->hook); break; + case NGM_PPPOE_SESSIONID: + msg = "SESSIONID"; + snprintf(sessionid, sizeof sessionid, "%04x", *(u_int16_t *)sts); + if (setenv("SESSIONID", sessionid, 1) != 0) + syslog(LOG_WARNING, "setenv: cannot set SESSIONID=%s: %m", + sessionid); + break; default: snprintf(unknown, sizeof unknown, "<%d>", (int)rep->header.cmd); msg = unknown; |
