version 1.1.1.1, 2013/07/22 08:44:29
|
version 1.1.1.2, 2016/11/01 09:56:12
|
Line 145
|
Line 145
|
{ 0, LINK_CONF_TIMEREMAIN, "time-remain" }, |
{ 0, LINK_CONF_TIMEREMAIN, "time-remain" }, |
{ 0, LINK_CONF_PEER_AS_CALLING, "peer-as-calling" }, |
{ 0, LINK_CONF_PEER_AS_CALLING, "peer-as-calling" }, |
{ 0, LINK_CONF_REPORT_MAC, "report-mac" }, |
{ 0, LINK_CONF_REPORT_MAC, "report-mac" }, |
|
{ 0, LINK_CONF_REMOVE_TEE, "remove-tee" }, |
{ 0, 0, NULL }, |
{ 0, 0, NULL }, |
}; |
}; |
|
|
Line 428 LinkCreate(Context ctx, int ac, char *av[], void *arg)
|
Line 429 LinkCreate(Context ctx, int ac, char *av[], void *arg)
|
l->upReasonValid = 0; |
l->upReasonValid = 0; |
l->downReason = NULL; |
l->downReason = NULL; |
l->downReasonValid = 0; |
l->downReasonValid = 0; |
|
l->tee_removed = 0; |
|
|
Disable(&l->conf.options, LINK_CONF_CHAPMD5); |
Disable(&l->conf.options, LINK_CONF_CHAPMD5); |
Accept(&l->conf.options, LINK_CONF_CHAPMD5); |
Accept(&l->conf.options, LINK_CONF_CHAPMD5); |
Line 717 LinkNgJoin(Link l)
|
Line 719 LinkNgJoin(Link l)
|
} |
} |
|
|
NgFuncDisconnect(gLinksCsock, l->name, path, NG_TEE_HOOK_LEFT2RIGHT); |
NgFuncDisconnect(gLinksCsock, l->name, path, NG_TEE_HOOK_LEFT2RIGHT); |
|
|
|
if (Enabled(&l->conf.options, LINK_CONF_REMOVE_TEE)) { |
|
if (l->stay == 0) { |
|
Log(LG_LINK, ("[%s] Link: Removing ng_tee node", l->name)); |
|
NgFuncShutdownNode(gLinksCsock, NG_TEE_NODE_TYPE, path); |
|
l->tee_removed = 1; |
|
} else |
|
Log(LG_LINK, ("[%s] Link: Can't remove ng_tee node on static link", |
|
l->name)); |
|
} |
return (0); |
return (0); |
} |
} |
|
|
Line 730 LinkNgLeave(Link l)
|
Line 742 LinkNgLeave(Link l)
|
char path[NG_PATHSIZ]; |
char path[NG_PATHSIZ]; |
struct ngm_connect cn; |
struct ngm_connect cn; |
|
|
|
/* ng_tee is already removed */ |
|
if (l->tee_removed == 1) |
|
return(0); |
|
|
memset(&cn, 0, sizeof(cn)); |
memset(&cn, 0, sizeof(cn)); |
snprintf(cn.path, sizeof(cn.path), "[%lx]:", (u_long)l->nodeID); |
snprintf(cn.path, sizeof(cn.path), "[%lx]:", (u_long)l->nodeID); |
strcpy(cn.ourhook, l->hook); |
strcpy(cn.ourhook, l->hook); |
Line 818 LinkNgDataEvent(int type, void *cookie)
|
Line 834 LinkNgDataEvent(int type, void *cookie)
|
mbfree(bp); |
mbfree(bp); |
if (errno == EAGAIN) |
if (errno == EAGAIN) |
return; |
return; |
Log(LG_LINK, ("Link socket read error: %s", strerror(errno))); | Perror("Link: Link socket read error"); |
return; |
return; |
} |
} |
num++; |
num++; |
Line 829 LinkNgDataEvent(int type, void *cookie)
|
Line 845 LinkNgDataEvent(int type, void *cookie)
|
name++; |
name++; |
id = strtol(name, &rest, 10); |
id = strtol(name, &rest, 10); |
if (rest[0] != 0 || !gLinks[id]) { |
if (rest[0] != 0 || !gLinks[id]) { |
Log(LG_ERR, ("Link: packet from unexisting link \"%s\"", | Log(LG_ERR, ("Link: Packet from unexisting link \"%s\"", |
name)); |
name)); |
mbfree(bp); |
mbfree(bp); |
continue; |
continue; |
Line 851 LinkNgDataEvent(int type, void *cookie)
|
Line 867 LinkNgDataEvent(int type, void *cookie)
|
|
|
if (MBLEN(bp) <= ptr) { |
if (MBLEN(bp) <= ptr) { |
LogDumpBp(LG_FRAME|LG_ERR, bp, |
LogDumpBp(LG_FRAME|LG_ERR, bp, |
"[%s] rec'd truncated %d bytes frame from link", | "[%s] rec'd truncated %zu bytes frame from link", |
l->name, MBLEN(bp)); |
l->name, MBLEN(bp)); |
mbfree(bp); |
mbfree(bp); |
continue; |
continue; |
Line 859 LinkNgDataEvent(int type, void *cookie)
|
Line 875 LinkNgDataEvent(int type, void *cookie)
|
|
|
/* Debugging */ |
/* Debugging */ |
LogDumpBp(LG_FRAME, bp, |
LogDumpBp(LG_FRAME, bp, |
"[%s] rec'd %d bytes frame from link proto=0x%04x", | "[%s] rec'd %zu bytes frame from link proto=0x%04x", |
l->name, MBLEN(bp), proto); |
l->name, MBLEN(bp), proto); |
|
|
bp = mbadj(bp, ptr); |
bp = mbadj(bp, ptr); |
Line 894 LinkNgDataEvent(int type, void *cookie)
|
Line 910 LinkNgDataEvent(int type, void *cookie)
|
|
|
if (MBLEN(bp) <= 4) { |
if (MBLEN(bp) <= 4) { |
LogDumpBp(LG_FRAME|LG_ERR, bp, |
LogDumpBp(LG_FRAME|LG_ERR, bp, |
"[%s] rec'd truncated %d bytes frame", | "[%s] rec'd truncated %zu bytes frame", |
b->name, MBLEN(bp)); |
b->name, MBLEN(bp)); |
continue; |
continue; |
} |
} |
Line 907 LinkNgDataEvent(int type, void *cookie)
|
Line 923 LinkNgDataEvent(int type, void *cookie)
|
|
|
/* Debugging */ |
/* Debugging */ |
LogDumpBp(LG_FRAME, bp, |
LogDumpBp(LG_FRAME, bp, |
"[%s] rec'd %d bytes bypass frame link=%d proto=0x%04x", | "[%s] rec'd %zu bytes bypass frame link=%d proto=0x%04x", |
b->name, MBLEN(bp), (int16_t)linkNum, proto); |
b->name, MBLEN(bp), (int16_t)linkNum, proto); |
|
|
/* Set link */ |
/* Set link */ |
Line 924 LinkNgDataEvent(int type, void *cookie)
|
Line 940 LinkNgDataEvent(int type, void *cookie)
|
|
|
/* Debugging */ |
/* Debugging */ |
LogDumpBp(LG_FRAME, bp, |
LogDumpBp(LG_FRAME, bp, |
"[%s] rec'd %d bytes frame on %s hook", b->name, MBLEN(bp), naddr.sg_data); | "[%s] rec'd %zu bytes frame on %s hook", b->name, MBLEN(bp), naddr.sg_data); |
|
|
#ifndef USE_NG_TCPMSS |
#ifndef USE_NG_TCPMSS |
/* A snooped, outgoing TCP SYN frame */ |
/* A snooped, outgoing TCP SYN frame */ |
Line 1088 AuthnameCommand(Context ctx, int ac, char *av[], void
|
Line 1104 AuthnameCommand(Context ctx, int ac, char *av[], void
|
{ |
{ |
int k; |
int k; |
|
|
if (ac > 1) | if (ac > 2) |
return (-1); |
return (-1); |
|
|
if (ac == 0) { |
if (ac == 0) { |
Line 1100 AuthnameCommand(Context ctx, int ac, char *av[], void
|
Line 1116 AuthnameCommand(Context ctx, int ac, char *av[], void
|
return (0); |
return (0); |
} |
} |
|
|
/* Find link */ | if (ac == 2 && strcasecmp(av[1], "ci") == 0) { |
for (k = 0; | /* Find link */ |
k < gNumLinks && (gLinks[k] == NULL || | for (k = 0; |
strcmp(gLinks[k]->lcp.auth.params.authname, av[0])); | k < gNumLinks && (gLinks[k] == NULL || |
k++); | strcasecmp(gLinks[k]->lcp.auth.params.authname, av[0])); |
| k++); |
| } else { |
| /* Find link */ |
| for (k = 0; |
| k < gNumLinks && (gLinks[k] == NULL || |
| strcmp(gLinks[k]->lcp.auth.params.authname, av[0])); |
| k++); |
| } |
if (k == gNumLinks) { |
if (k == gNumLinks) { |
/* Change default link and bundle */ |
/* Change default link and bundle */ |
RESETREF(ctx->lnk, NULL); |
RESETREF(ctx->lnk, NULL); |