Module Name: src
Committed By: yamaguchi
Date: Wed May 19 02:14:19 UTC 2021
Modified Files:
src/sys/net: if_spppsubr.c
Log Message:
Make functions that use for logging MP-safe
There is no change in behavior.
To generate a diff of this commit:
cvs rdiff -u -r1.245 -r1.246 src/sys/net/if_spppsubr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/net/if_spppsubr.c
diff -u src/sys/net/if_spppsubr.c:1.245 src/sys/net/if_spppsubr.c:1.246
--- src/sys/net/if_spppsubr.c:1.245 Wed May 19 02:07:20 2021
+++ src/sys/net/if_spppsubr.c Wed May 19 02:14:19 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: if_spppsubr.c,v 1.245 2021/05/19 02:07:20 yamaguchi Exp $ */
+/* $NetBSD: if_spppsubr.c,v 1.246 2021/05/19 02:14:19 yamaguchi Exp $ */
/*
* Synchronous PPP/Cisco link level subroutines.
@@ -41,7 +41,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.245 2021/05/19 02:07:20 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_spppsubr.c,v 1.246 2021/05/19 02:14:19 yamaguchi Exp $");
#if defined(_KERNEL_OPT)
#include "opt_inet.h"
@@ -116,6 +116,14 @@ __KERNEL_RCSID(0, "$NetBSD: if_spppsubr.
#define SPPP_ALIVE_INTERVAL DEFAULT_ALIVE_INTERVAL
#endif
+#define SPPP_CPTYPE_NAMELEN 5 /* buf size of cp type name */
+#define SPPP_AUTHTYPE_NAMELEN 32 /* buf size of auth type name */
+#define SPPP_LCPOPT_NAMELEN 5 /* buf size of lcp option name */
+#define SPPP_IPCPOPT_NAMELEN 5 /* buf size of ipcp option name */
+#define SPPP_IPV6CPOPT_NAMELEN 5 /* buf size of ipv6cp option name */
+#define SPPP_PROTO_NAMELEN 7 /* buf size of protocol name */
+#define SPPP_DOTQUAD_BUFLEN 16 /* length of "aa.bb.cc.dd" */
+
/*
* Interface flags that can be set in an ifconfig command.
*
@@ -437,16 +445,16 @@ static void sppp_chap_tlu(struct sppp *)
static void sppp_chap_scr(struct sppp *);
static void sppp_chap_rcv_challenge_event(struct sppp *, void *);
-static const char *sppp_auth_type_name(u_short, u_char);
-static const char *sppp_cp_type_name(u_char);
-static const char *sppp_dotted_quad(uint32_t);
-static const char *sppp_ipcp_opt_name(u_char);
+static const char *sppp_auth_type_name(char *, size_t, u_short, u_char);
+static const char *sppp_cp_type_name(char *, size_t, u_char);
+static const char *sppp_dotted_quad(char *, size_t, uint32_t);
+static const char *sppp_ipcp_opt_name(char *, size_t, u_char);
#ifdef INET6
-static const char *sppp_ipv6cp_opt_name(u_char);
+static const char *sppp_ipv6cp_opt_name(char *, size_t, u_char);
#endif
-static const char *sppp_lcp_opt_name(u_char);
+static const char *sppp_lcp_opt_name(char *, size_t, u_char);
static const char *sppp_phase_name(int);
-static const char *sppp_proto_name(u_short);
+static const char *sppp_proto_name(char *, size_t, u_short);
static const char *sppp_state_name(int);
static int sppp_params(struct sppp *, u_long, void *);
#ifdef INET
@@ -1612,10 +1620,15 @@ sppp_cp_send(struct sppp *sp, u_short pr
memcpy(lh + 1, data, len);
if (debug) {
+ char pbuf[SPPP_PROTO_NAMELEN];
+ char tbuf[SPPP_CPTYPE_NAMELEN];
+ const char *pname, *cpname;
+
+ pname = sppp_proto_name(pbuf, sizeof(pbuf), proto);
+ cpname = sppp_cp_type_name(tbuf, sizeof(tbuf), lh->type);
log(LOG_DEBUG, "%s: %s output <%s id=0x%x len=%d",
- ifp->if_xname,
- sppp_proto_name(proto),
- sppp_cp_type_name(lh->type), lh->ident, ntohs(lh->len));
+ ifp->if_xname, pname, cpname,
+ lh->ident, ntohs(lh->len));
if (len)
sppp_print_bytes((u_char *)(lh + 1), len);
addlog(">\n");
@@ -1756,6 +1769,8 @@ sppp_cp_input(const struct cp *cp, struc
int printlen, len = m->m_pkthdr.len;
u_char *p;
uint32_t u32;
+ char tbuf[SPPP_CPTYPE_NAMELEN];
+ const char *cpname;
SPPP_LOCK(sp, RW_WRITER);
@@ -1771,11 +1786,12 @@ sppp_cp_input(const struct cp *cp, struc
h = mtod(m, struct lcp_header *);
if (debug) {
printlen = ntohs(h->len);
+ cpname = sppp_cp_type_name(tbuf, sizeof(tbuf), h->type);
log(LOG_DEBUG,
"%s: %s input(%s): <%s id=0x%x len=%d",
ifp->if_xname, cp->name,
sppp_state_name(scp->state),
- sppp_cp_type_name(h->type), h->ident, printlen);
+ cpname, h->ident, printlen);
if (len < printlen)
printlen = len;
if (printlen > 4)
@@ -1855,11 +1871,11 @@ sppp_cp_input(const struct cp *cp, struc
break;
case CODE_REJ:
/* XXX catastrophic rejects (RXJ-) aren't handled yet. */
+ cpname = sppp_cp_type_name(tbuf, sizeof(tbuf), h->type);
log(LOG_INFO,
"%s: %s: ignoring RXJ (%s) for code ?, "
"danger will robinson\n",
- ifp->if_xname, cp->name,
- sppp_cp_type_name(h->type));
+ ifp->if_xname, cp->name, cpname);
sppp_wq_add(sp->wq_cp, &scp->work_rxj);
break;
case PROTO_REJ:
@@ -1881,13 +1897,14 @@ sppp_cp_input(const struct cp *cp, struc
if (upper == NULL)
catastrophic++;
- if (debug)
+ if (debug) {
+ cpname = sppp_cp_type_name(tbuf, sizeof(tbuf), h->type);
log(LOG_INFO,
"%s: %s: RXJ%c (%s) for proto 0x%x (%s/%s)\n",
ifp->if_xname, cp->name, catastrophic ? '-' : '+',
- sppp_cp_type_name(h->type), proto,
- upper ? upper->name : "unknown",
+ cpname, proto, upper ? upper->name : "unknown",
upper ? sppp_state_name(sp->scp[upper->protoidx].state) : "?");
+ }
/*
* if we got RXJ+ against conf-req, the peer does not implement
@@ -2800,6 +2817,7 @@ sppp_lcp_confreq(struct sppp *sp, struct
int len, rlen;
uint32_t nmagic;
u_short authproto;
+ char lbuf[SPPP_LCPOPT_NAMELEN];
KASSERT(SPPP_WLOCKED(sp));
@@ -2845,7 +2863,7 @@ sppp_lcp_confreq(struct sppp *sp, struct
goto end;
}
if (debug)
- addlog(" %s", sppp_lcp_opt_name(*p));
+ addlog(" %s", sppp_lcp_opt_name(lbuf, sizeof(lbuf), *p));
switch (p[0]) {
case LCP_OPT_MAGIC:
/* Magic number. */
@@ -2964,7 +2982,7 @@ sppp_lcp_confreq(struct sppp *sp, struct
break;
if (debug)
- addlog(" %s", sppp_lcp_opt_name(*p));
+ addlog(" %s", sppp_lcp_opt_name(lbuf, sizeof(lbuf), *p));
switch (p[0]) {
case LCP_OPT_MAGIC:
/* Magic number -- extract. */
@@ -3050,10 +3068,18 @@ sppp_lcp_confreq(struct sppp *sp, struct
if (debug)
addlog(" [chap without MD5]");
} else {
- if (debug)
+ if (debug) {
+ char pbuf1[SPPP_PROTO_NAMELEN];
+ char pbuf2[SPPP_PROTO_NAMELEN];
+ const char *pname1, *pname2;
+
+ pname1 = sppp_proto_name(pbuf1,
+ sizeof(pbuf1), sp->myauth.proto);
+ pname2 = sppp_proto_name(pbuf2,
+ sizeof(pbuf2), authproto);
addlog(" [mine %s != his %s]",
- sppp_proto_name(sp->myauth.proto),
- sppp_proto_name(authproto));
+ pname1, pname2);
+ }
}
/* not agreed, nak */
if (sp->myauth.proto == PPP_CHAP) {
@@ -3176,8 +3202,10 @@ sppp_lcp_confrej(struct sppp *sp, struct
"dropping.\n", ifp->if_xname);
goto end;
}
- if (debug)
- addlog(" %s", sppp_lcp_opt_name(*p));
+ if (debug) {
+ char lbuf[SPPP_LCPOPT_NAMELEN];
+ addlog(" %s", sppp_lcp_opt_name(lbuf, sizeof(lbuf), *p));
+ }
switch (p[0]) {
case LCP_OPT_MAGIC:
/* Magic number -- can't use it, use 0 */
@@ -3258,8 +3286,10 @@ sppp_lcp_confnak(struct sppp *sp, struct
"dropping.\n", ifp->if_xname);
goto end;
}
- if (debug)
- addlog(" %s", sppp_lcp_opt_name(*p));
+ if (debug) {
+ char lbuf[SPPP_LCPOPT_NAMELEN];
+ addlog(" %s", sppp_lcp_opt_name(lbuf, sizeof(lbuf),*p));
+ }
switch (p[0]) {
case LCP_OPT_MAGIC:
/* Magic number -- renegotiate */
@@ -3687,6 +3717,9 @@ sppp_ipcp_confreq(struct sppp *sp, struc
struct ifnet *ifp = &sp->pp_if;
int rlen, len, debug = ifp->if_flags & IFF_DEBUG;
uint32_t hisaddr, desiredaddr;
+ char ipbuf[SPPP_IPCPOPT_NAMELEN];
+ char dqbuf[SPPP_DOTQUAD_BUFLEN];
+ const char *dq;
KASSERT(SPPP_WLOCKED(sp));
@@ -3726,8 +3759,10 @@ sppp_ipcp_confreq(struct sppp *sp, struc
type = CP_RCR_ERR;
goto end;
}
- if (debug)
- addlog(" %s", sppp_ipcp_opt_name(*p));
+ if (debug) {
+ addlog(" %s",
+ sppp_ipcp_opt_name(ipbuf, sizeof(ipbuf), *p));
+ }
switch (p[0]) {
#ifdef notyet
case IPCP_OPT_COMPRESSION:
@@ -3792,8 +3827,10 @@ sppp_ipcp_confreq(struct sppp *sp, struc
if (l == 0)
break;
- if (debug)
- addlog(" %s", sppp_ipcp_opt_name(*p));
+ if (debug) {
+ addlog(" %s",
+ sppp_ipcp_opt_name(ipbuf, sizeof(ipbuf), *p));
+ }
switch (p[0]) {
#ifdef notyet
case IPCP_OPT_COMPRESSION:
@@ -3809,9 +3846,11 @@ sppp_ipcp_confreq(struct sppp *sp, struc
* this is agreeable. Gonna conf-ack
* it.
*/
- if (debug)
- addlog(" %s [ack]",
- sppp_dotted_quad(hisaddr));
+ if (debug) {
+ dq = sppp_dotted_quad(dqbuf,
+ sizeof(dqbuf), hisaddr);
+ addlog(" %s [ack]", dq);
+ }
/* record that we've seen it already */
sp->ipcp.flags |= IPCP_HISADDR_SEEN;
sp->ipcp.req_hisaddr = desiredaddr;
@@ -3826,11 +3865,13 @@ sppp_ipcp_confreq(struct sppp *sp, struc
* conf-nak it with our value.
*/
if (debug) {
- if (desiredaddr == 0)
+ if (desiredaddr == 0) {
addlog(" [addr requested]");
- else
- addlog(" %s [not agreed]",
- sppp_dotted_quad(desiredaddr));
+ } else {
+ dq = sppp_dotted_quad(dqbuf,
+ sizeof(dqbuf), desiredaddr);
+ addlog(" %s [not agreed]", dq);
+ }
}
p[2] = hisaddr >> 24;
@@ -3932,8 +3973,11 @@ sppp_ipcp_confrej(struct sppp *sp, struc
ifp->if_xname);
goto end;
}
- if (debug)
- addlog(" %s", sppp_ipcp_opt_name(*p));
+ if (debug) {
+ char ipbuf[SPPP_IPCPOPT_NAMELEN];
+ addlog(" %s",
+ sppp_ipcp_opt_name(ipbuf, sizeof(ipbuf), *p));
+ }
switch (p[0]) {
case IPCP_OPT_ADDRESS:
/*
@@ -4000,8 +4044,11 @@ sppp_ipcp_confnak(struct sppp *sp, struc
ifp->if_xname);
return;
}
- if (debug)
- addlog(" %s", sppp_ipcp_opt_name(*p));
+ if (debug) {
+ char ipbuf[SPPP_IPCPOPT_NAMELEN];
+ addlog(" %s",
+ sppp_ipcp_opt_name(ipbuf, sizeof(ipbuf), *p));
+ }
switch (*p) {
case IPCP_OPT_ADDRESS:
/*
@@ -4013,9 +4060,14 @@ sppp_ipcp_confnak(struct sppp *sp, struc
wantaddr = p[2] << 24 | p[3] << 16 |
p[4] << 8 | p[5];
SET(sp->ipcp.opts, SPPP_IPCP_OPT_ADDRESS);
- if (debug)
- addlog(" [wantaddr %s]",
- sppp_dotted_quad(wantaddr));
+ if (debug) {
+ char dqbuf[SPPP_DOTQUAD_BUFLEN];
+ const char *dq;
+
+ dq = sppp_dotted_quad(dqbuf,
+ sizeof(dqbuf), wantaddr);
+ addlog(" [wantaddr %s]", dq);
+ }
/*
* When doing dynamic address assignment,
* we accept his offer. Otherwise, we
@@ -4225,6 +4277,9 @@ sppp_ipv6cp_confreq(struct sppp *sp, str
int ifidcount;
int collision, nohisaddr;
char ip6buf[INET6_ADDRSTRLEN];
+ char tbuf[SPPP_CPTYPE_NAMELEN];
+ char ipv6buf[SPPP_IPV6CPOPT_NAMELEN];
+ const char *cpname;
KASSERT(SPPP_WLOCKED(sp));
@@ -4265,8 +4320,10 @@ sppp_ipv6cp_confreq(struct sppp *sp, str
type = CP_RCR_ERR;
goto end;
}
- if (debug)
- addlog(" %s", sppp_ipv6cp_opt_name(*p));
+ if (debug) {
+ addlog(" %s", sppp_ipv6cp_opt_name(ipv6buf,
+ sizeof(ipv6buf),*p));
+ }
switch (p[0]) {
case IPV6CP_OPT_IFID:
if (len >= 10 && l == 10 && ifidcount == 0) {
@@ -4326,8 +4383,10 @@ sppp_ipv6cp_confreq(struct sppp *sp, str
if (l == 0)
break;
- if (debug)
- addlog(" %s", sppp_ipv6cp_opt_name(*p));
+ if (debug) {
+ addlog(" %s", sppp_ipv6cp_opt_name(ipv6buf,
+ sizeof(ipv6buf), *p));
+ }
switch (p[0]) {
#ifdef notyet
case IPV6CP_OPT_COMPRESSION:
@@ -4353,9 +4412,11 @@ sppp_ipv6cp_confreq(struct sppp *sp, str
sizeof(sp->ipv6cp.my_ifid));
if (debug) {
+ cpname = sppp_cp_type_name(tbuf,
+ sizeof(tbuf), CONF_ACK);
addlog(" %s [%s]",
IN6_PRINT(ip6buf, &desiredaddr),
- sppp_cp_type_name(CONF_ACK));
+ cpname);
}
continue;
}
@@ -4377,8 +4438,10 @@ sppp_ipv6cp_confreq(struct sppp *sp, str
}
if (debug) {
int ctype = type == CP_RCR_REJ ? CONF_REJ : CONF_NAK;
+
+ cpname = sppp_cp_type_name(tbuf, sizeof(tbuf), ctype);
addlog(" %s [%s]", IN6_PRINT(ip6buf, &desiredaddr),
- sppp_cp_type_name(ctype));
+ cpname);
}
break;
}
@@ -4399,9 +4462,9 @@ sppp_ipv6cp_confreq(struct sppp *sp, str
int ctype ;
ctype = type == CP_RCR_REJ ?
CONF_REJ : CONF_NAK;
+ cpname = sppp_cp_type_name(tbuf, sizeof(tbuf), ctype);
addlog(" send %s suggest %s\n",
- sppp_cp_type_name(ctype),
- IN6_PRINT(ip6buf, &suggestaddr));
+ cpname, IN6_PRINT(ip6buf, &suggestaddr));
}
}
#ifdef notdef
@@ -4464,8 +4527,11 @@ sppp_ipv6cp_confrej(struct sppp *sp, str
"dropping\n", ifp->if_xname);
goto end;
}
- if (debug)
- addlog(" %s", sppp_ipv6cp_opt_name(*p));
+ if (debug) {
+ char ipv6buf[SPPP_IPV6CPOPT_NAMELEN];
+ addlog(" %s", sppp_ipv6cp_opt_name(ipv6buf,
+ sizeof(ipv6buf), *p));
+ }
switch (p[0]) {
case IPV6CP_OPT_IFID:
/*
@@ -4523,8 +4589,11 @@ sppp_ipv6cp_confnak(struct sppp *sp, str
"dropping\n", ifp->if_xname);
goto end;
}
- if (debug)
- addlog(" %s", sppp_ipv6cp_opt_name(*p));
+ if (debug) {
+ char ipv6buf[SPPP_IPV6CPOPT_NAMELEN];
+ addlog(" %s", sppp_ipv6cp_opt_name(ipv6buf,
+ sizeof(ipv6buf), *p));
+ }
switch (p[0]) {
case IPV6CP_OPT_IFID:
/*
@@ -4730,6 +4799,8 @@ sppp_chap_input(struct sppp *sp, struct
u_char *value, *name, digest[sizeof(sp->chap.challenge)];
int value_len, name_len;
MD5_CTX ctx;
+ char abuf[SPPP_AUTHTYPE_NAMELEN];
+ const char *authname;
len = m->m_pkthdr.len;
if (len < 4) {
@@ -4761,11 +4832,12 @@ sppp_chap_input(struct sppp *sp, struct
name_len = len - value_len - 5;
if (name_len < 0) {
if (debug) {
+ authname = sppp_auth_type_name(abuf,
+ sizeof(abuf), PPP_CHAP, h->type);
log(LOG_DEBUG,
"%s: chap corrupted challenge "
"<%s id=0x%x len=%d",
- ifp->if_xname,
- sppp_auth_type_name(PPP_CHAP, h->type),
+ ifp->if_xname, authname,
h->ident, ntohs(h->len));
if (len > 4)
sppp_print_bytes((u_char *)(h + 1),
@@ -4776,10 +4848,11 @@ sppp_chap_input(struct sppp *sp, struct
}
if (debug) {
+ authname = sppp_auth_type_name(abuf,
+ sizeof(abuf), PPP_CHAP, h->type);
log(LOG_DEBUG,
"%s: chap input <%s id=0x%x len=%d name=",
- ifp->if_xname,
- sppp_auth_type_name(PPP_CHAP, h->type), h->ident,
+ ifp->if_xname, authname, h->ident,
ntohs(h->len));
sppp_print_string((char *) name, name_len);
addlog(" value-size=%d value=", value_len);
@@ -4907,11 +4980,12 @@ sppp_chap_input(struct sppp *sp, struct
name_len = len - value_len - 5;
if (name_len < 0) {
if (debug) {
+ authname = sppp_auth_type_name(abuf,
+ sizeof(abuf), PPP_CHAP, h->type);
log(LOG_DEBUG,
"%s: chap corrupted response "
"<%s id=0x%x len=%d",
- ifp->if_xname,
- sppp_auth_type_name(PPP_CHAP, h->type),
+ ifp->if_xname, authname,
h->ident, ntohs(h->len));
if (len > 4)
sppp_print_bytes((u_char *)(h + 1),
@@ -4950,12 +5024,13 @@ sppp_chap_input(struct sppp *sp, struct
}
if (debug) {
+ authname = sppp_auth_type_name(abuf,
+ sizeof(abuf), PPP_CHAP, h->type);
log(LOG_DEBUG, "%s: chap input(%s) "
"<%s id=0x%x len=%d name=",
ifp->if_xname,
sppp_state_name(sp->scp[IDX_CHAP].state),
- sppp_auth_type_name(PPP_CHAP, h->type),
- h->ident, ntohs(h->len));
+ authname, h->ident, ntohs(h->len));
sppp_print_string((char *)name, name_len);
addlog(" value-size=%d value=", value_len);
sppp_print_bytes(value, value_len);
@@ -5178,6 +5253,8 @@ sppp_pap_input(struct sppp *sp, struct m
int len, x;
char *name, *secret;
int name_len, secret_len;
+ char abuf[SPPP_AUTHTYPE_NAMELEN];
+ const char *authname;
/*
* Malicious input might leave this uninitialized, so
@@ -5215,10 +5292,11 @@ sppp_pap_input(struct sppp *sp, struct m
if (name_len > len - 6 ||
(secret_len = secret[-1]) > len - 6 - name_len) {
if (debug) {
+ authname = sppp_auth_type_name(abuf,
+ sizeof(abuf), PPP_PAP, h->type);
log(LOG_DEBUG, "%s: pap corrupted input "
"<%s id=0x%x len=%d",
- ifp->if_xname,
- sppp_auth_type_name(PPP_PAP, h->type),
+ ifp->if_xname, authname,
h->ident, ntohs(h->len));
if (len > 4)
sppp_print_bytes((u_char *)(h + 1),
@@ -5228,12 +5306,13 @@ sppp_pap_input(struct sppp *sp, struct m
break;
}
if (debug) {
+ authname = sppp_auth_type_name(abuf,
+ sizeof(abuf), PPP_PAP, h->type);
log(LOG_DEBUG, "%s: pap input(%s) "
"<%s id=0x%x len=%d name=",
ifp->if_xname,
sppp_state_name(sp->scp[IDX_PAP].state),
- sppp_auth_type_name(PPP_PAP, h->type),
- h->ident, ntohs(h->len));
+ authname, h->ident, ntohs(h->len));
sppp_print_string((char *)name, name_len);
addlog(" secret=");
sppp_print_string((char *)secret, secret_len);
@@ -5480,9 +5559,13 @@ sppp_auth_send(const struct cp *cp, stru
lh->len = htons(LCP_HEADER_LEN + len);
if (debug) {
+ char abuf[SPPP_AUTHTYPE_NAMELEN];
+ const char *authname;
+
+ authname = sppp_auth_type_name(abuf,
+ sizeof(abuf), cp->proto, lh->type);
log(LOG_DEBUG, "%s: %s output <%s id=0x%x len=%d",
- ifp->if_xname, cp->name,
- sppp_auth_type_name(cp->proto, lh->type),
+ ifp->if_xname, cp->name, authname,
lh->ident, ntohs(lh->len));
if (len)
sppp_print_bytes((u_char *)(lh + 1), len);
@@ -6447,9 +6530,9 @@ sppp_phase_network(struct sppp *sp)
}
static const char *
-sppp_cp_type_name(u_char type)
+sppp_cp_type_name(char *buf, size_t buflen, u_char type)
{
- static char buf[12];
+
switch (type) {
case CONF_REQ: return "conf-req";
case CONF_ACK: return "conf-ack";
@@ -6463,14 +6546,14 @@ sppp_cp_type_name(u_char type)
case ECHO_REPLY: return "echo-reply";
case DISC_REQ: return "discard-req";
}
- snprintf(buf, sizeof(buf), "0x%x", type);
+ if (buf != NULL)
+ snprintf(buf, buflen, "0x%02x", type);
return buf;
}
static const char *
-sppp_auth_type_name(u_short proto, u_char type)
+sppp_auth_type_name(char *buf, size_t buflen, u_short proto, u_char type)
{
- static char buf[32];
const char *name;
switch (proto) {
@@ -6498,14 +6581,15 @@ sppp_auth_type_name(u_short proto, u_cha
break;
}
- snprintf(buf, sizeof(buf), "%s(%#x) %#x", name, proto, type);
+ if (buf != NULL)
+ snprintf(buf, buflen, "%s(%#x) 0x%02x", name, proto, type);
return buf;
}
static const char *
-sppp_lcp_opt_name(u_char opt)
+sppp_lcp_opt_name(char *buf, size_t buflen, u_char opt)
{
- static char buf[12];
+
switch (opt) {
case LCP_OPT_MRU: return "mru";
case LCP_OPT_ASYNC_MAP: return "async-map";
@@ -6521,14 +6605,15 @@ sppp_lcp_opt_name(u_char opt)
case LCP_OPT_MP_SSNHF: return "mp-ssnhf";
case LCP_OPT_MP_EID: return "mp-eid";
}
- snprintf(buf, sizeof(buf), "0x%x", opt);
+ if (buf != NULL)
+ snprintf(buf, buflen, "0x%02x", opt);
return buf;
}
static const char *
-sppp_ipcp_opt_name(u_char opt)
+sppp_ipcp_opt_name(char *buf, size_t buflen, u_char opt)
{
- static char buf[12];
+
switch (opt) {
case IPCP_OPT_ADDRESSES: return "addresses";
case IPCP_OPT_COMPRESSION: return "compression";
@@ -6536,20 +6621,22 @@ sppp_ipcp_opt_name(u_char opt)
case IPCP_OPT_PRIMDNS: return "primdns";
case IPCP_OPT_SECDNS: return "secdns";
}
- snprintf(buf, sizeof(buf), "0x%x", opt);
+ if (buf != NULL)
+ snprintf(buf, buflen, "0x%02x", opt);
return buf;
}
#ifdef INET6
static const char *
-sppp_ipv6cp_opt_name(u_char opt)
+sppp_ipv6cp_opt_name(char *buf, size_t buflen, u_char opt)
{
- static char buf[12];
+
switch (opt) {
case IPV6CP_OPT_IFID: return "ifid";
case IPV6CP_OPT_COMPRESSION: return "compression";
}
- snprintf(buf, sizeof(buf), "0x%x", opt);
+ if (buf != NULL)
+ snprintf(buf, buflen, "0x%02x", opt);
return buf;
}
#endif
@@ -6557,6 +6644,7 @@ sppp_ipv6cp_opt_name(u_char opt)
static const char *
sppp_state_name(int state)
{
+
switch (state) {
case STATE_INITIAL: return "initial";
case STATE_STARTING: return "starting";
@@ -6575,6 +6663,7 @@ sppp_state_name(int state)
static const char *
sppp_phase_name(int phase)
{
+
switch (phase) {
case SPPP_PHASE_DEAD: return "dead";
case SPPP_PHASE_ESTABLISH: return "establish";
@@ -6586,9 +6675,9 @@ sppp_phase_name(int phase)
}
static const char *
-sppp_proto_name(u_short proto)
+sppp_proto_name(char *buf, size_t buflen, u_short proto)
{
- static char buf[12];
+
switch (proto) {
case PPP_LCP: return "lcp";
case PPP_IPCP: return "ipcp";
@@ -6596,7 +6685,10 @@ sppp_proto_name(u_short proto)
case PPP_CHAP: return "chap";
case PPP_IPV6CP: return "ipv6cp";
}
- snprintf(buf, sizeof(buf), "0x%x", (unsigned)proto);
+ if (buf != NULL) {
+ snprintf(buf, sizeof(buf), "0x%04x",
+ (unsigned)proto);
+ }
return buf;
}
@@ -6626,15 +6718,17 @@ sppp_print_string(const char *p, u_short
}
static const char *
-sppp_dotted_quad(uint32_t addr)
+sppp_dotted_quad(char *buf, size_t buflen, uint32_t addr)
{
- static char s[16];
- snprintf(s, sizeof(s), "%d.%d.%d.%d",
- (int)((addr >> 24) & 0xff),
- (int)((addr >> 16) & 0xff),
- (int)((addr >> 8) & 0xff),
- (int)(addr & 0xff));
- return s;
+
+ if (buf != NULL) {
+ snprintf(buf, buflen, "%u.%u.%u.%u",
+ (unsigned int)((addr >> 24) & 0xff),
+ (unsigned int)((addr >> 16) & 0xff),
+ (unsigned int)((addr >> 8) & 0xff),
+ (unsigned int)(addr & 0xff));
+ }
+ return buf;
}
/* a dummy, used to drop uninteresting events */
@@ -6698,8 +6792,11 @@ sppp_screply(const struct cp *cp, struct
}
if (debug) {
- log(LOG_DEBUG, "%s: send %s\n",
- ifp->if_xname, sppp_cp_type_name(type));
+ char tbuf[SPPP_CPTYPE_NAMELEN];
+ const char *cpname;
+
+ cpname = sppp_cp_type_name(tbuf, sizeof(tbuf), type);
+ log(LOG_DEBUG, "%s: send %s\n", ifp->if_xname, cpname);
}
sppp_cp_send(sp, cp->proto, type, ident, msglen, msg);