Get rid of all (but one in write.c) static size buffers.
This commit is contained in:
parent
adc82a1e80
commit
63673a77c6
@ -57,9 +57,8 @@ const struct ngcmd dot_cmd = {
|
||||
static int
|
||||
DotCmd(int ac, char **av)
|
||||
{
|
||||
u_char nlrbuf[16 * 1024];
|
||||
struct ng_mesg *const nlresp = (struct ng_mesg *)nlrbuf;
|
||||
struct namelist *const nlist = (struct namelist *)nlresp->data;
|
||||
struct ng_mesg *nlresp;
|
||||
struct namelist *nlist;
|
||||
FILE *f = stdout;
|
||||
int ch;
|
||||
u_int i;
|
||||
@ -99,11 +98,12 @@ DotCmd(int ac, char **av)
|
||||
warn("send listnodes msg");
|
||||
goto error;
|
||||
}
|
||||
if (NgRecvMsg(csock, nlresp, sizeof(nlrbuf), NULL) < 0) {
|
||||
if (NgAllocRecvMsg(csock, &nlresp, NULL) < 0) {
|
||||
warn("recv listnodes msg");
|
||||
goto error;
|
||||
}
|
||||
|
||||
nlist = (struct namelist *)nlresp->data;
|
||||
fprintf(f, "graph netgraph {\n");
|
||||
/* TODO: implement rank = same or subgraphs at some point */
|
||||
fprintf(f, "\tedge [ weight = 1.0 ];\n");
|
||||
@ -125,10 +125,9 @@ DotCmd(int ac, char **av)
|
||||
fprintf(f, "\t};\n");
|
||||
|
||||
for (i = 0; i < nlist->numnames; i++) {
|
||||
u_char hlrbuf[16 * 1024];
|
||||
struct ng_mesg *const hlresp = (struct ng_mesg *)hlrbuf;
|
||||
struct hooklist *const hlist = (struct hooklist *)hlresp->data;
|
||||
struct nodeinfo *const ninfo = &hlist->nodeinfo;
|
||||
struct ng_mesg *hlresp;
|
||||
struct hooklist *hlist;
|
||||
struct nodeinfo *ninfo;
|
||||
char path[NG_PATHSIZ];
|
||||
u_int j;
|
||||
|
||||
@ -138,16 +137,22 @@ DotCmd(int ac, char **av)
|
||||
/* Get node info and hook list */
|
||||
if (NgSendMsg(csock, path, NGM_GENERIC_COOKIE, NGM_LISTHOOKS,
|
||||
NULL, 0) < 0) {
|
||||
free(nlresp);
|
||||
warn("send listhooks msg");
|
||||
goto error;
|
||||
}
|
||||
if (NgRecvMsg(csock, hlresp, sizeof(hlrbuf), NULL) < 0) {
|
||||
if (NgAllocRecvMsg(csock, &hlresp, NULL) < 0) {
|
||||
free(nlresp);
|
||||
warn("recv listhooks msg");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (ninfo->hooks == 0)
|
||||
hlist = (struct hooklist *)hlresp->data;
|
||||
ninfo = &hlist->nodeinfo;
|
||||
if (ninfo->hooks == 0) {
|
||||
free(hlresp);
|
||||
continue;
|
||||
}
|
||||
|
||||
fprintf(f, "\tnode [ shape = octagon, fontsize = 10 ] {\n");
|
||||
for (j = 0; j < ninfo->hooks; j++)
|
||||
@ -174,11 +179,12 @@ DotCmd(int ac, char **av)
|
||||
(uintmax_t)hlist->link[j].nodeinfo.id,
|
||||
hlist->link[j].peerhook);
|
||||
}
|
||||
|
||||
free(hlresp);
|
||||
}
|
||||
|
||||
fprintf(f, "};\n");
|
||||
|
||||
free(nlresp);
|
||||
if (f != stdout)
|
||||
(void)fclose(f);
|
||||
return (CMDRTN_OK);
|
||||
|
@ -54,9 +54,8 @@ const struct ngcmd list_cmd = {
|
||||
static int
|
||||
ListCmd(int ac, char **av)
|
||||
{
|
||||
u_char rbuf[16 * 1024];
|
||||
struct ng_mesg *const resp = (struct ng_mesg *) rbuf;
|
||||
struct namelist *const nlist = (struct namelist *) resp->data;
|
||||
struct ng_mesg *resp;
|
||||
struct namelist *nlist;
|
||||
int named_only = 0;
|
||||
int ch, rtn = CMDRTN_OK;
|
||||
u_int k;
|
||||
@ -91,12 +90,13 @@ ListCmd(int ac, char **av)
|
||||
warn("send msg");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
if (NgRecvMsg(csock, resp, sizeof(rbuf), NULL) < 0) {
|
||||
if (NgAllocRecvMsg(csock, &resp, NULL) < 0) {
|
||||
warn("recv msg");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
|
||||
/* Show each node */
|
||||
nlist = (struct namelist *) resp->data;
|
||||
printf("There are %d total %snodes:\n",
|
||||
nlist->numnames, named_only ? "named " : "");
|
||||
for (k = 0; k < nlist->numnames; k++) {
|
||||
@ -110,6 +110,7 @@ ListCmd(int ac, char **av)
|
||||
}
|
||||
|
||||
/* Done */
|
||||
free(resp);
|
||||
return (rtn);
|
||||
}
|
||||
|
||||
|
@ -236,13 +236,12 @@ DoInteractive(void)
|
||||
|
||||
/* Display any incoming data packet */
|
||||
if (FD_ISSET(dsock, &rfds)) {
|
||||
u_char buf[8192];
|
||||
u_char *buf;
|
||||
char hook[NG_HOOKSIZ];
|
||||
int rl;
|
||||
|
||||
/* Read packet from socket */
|
||||
if ((rl = NgRecvData(dsock,
|
||||
buf, sizeof(buf), hook)) < 0)
|
||||
if ((rl = NgAllocRecvData(dsock, &buf, hook)) < 0)
|
||||
err(EX_OSERR, "reading hook \"%s\"", hook);
|
||||
if (rl == 0)
|
||||
errx(EX_OSERR, "EOF from hook \"%s\"?", hook);
|
||||
@ -250,6 +249,7 @@ DoInteractive(void)
|
||||
/* Write packet to stdout */
|
||||
printf("Rec'd data packet on hook \"%s\":\n", hook);
|
||||
DumpAscii(buf, rl);
|
||||
free(buf);
|
||||
}
|
||||
|
||||
/* Get any user input */
|
||||
|
@ -40,8 +40,6 @@
|
||||
|
||||
#include "ngctl.h"
|
||||
|
||||
#define BUF_SIZE 4096
|
||||
|
||||
static int MsgCmd(int ac, char **av);
|
||||
|
||||
const struct ngcmd msg_cmd = {
|
||||
@ -58,9 +56,9 @@ const struct ngcmd msg_cmd = {
|
||||
static int
|
||||
MsgCmd(int ac, char **av)
|
||||
{
|
||||
char buf[BUF_SIZE];
|
||||
char *buf;
|
||||
char *path, *cmdstr;
|
||||
int i;
|
||||
int i, len;
|
||||
|
||||
/* Get arguments */
|
||||
if (ac < 3)
|
||||
@ -69,16 +67,24 @@ MsgCmd(int ac, char **av)
|
||||
cmdstr = av[2];
|
||||
|
||||
/* Put command and arguments back together as one string */
|
||||
for (len = 1, i = 3; i < ac; i++)
|
||||
len += strlen(av[i]) + 1;
|
||||
if ((buf = malloc(len)) == NULL) {
|
||||
warn("malloc");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
for (*buf = '\0', i = 3; i < ac; i++) {
|
||||
snprintf(buf + strlen(buf),
|
||||
sizeof(buf) - strlen(buf), " %s", av[i]);
|
||||
len - strlen(buf), " %s", av[i]);
|
||||
}
|
||||
|
||||
/* Send it */
|
||||
if (NgSendAsciiMsg(csock, path, "%s%s", cmdstr, buf) < 0) {
|
||||
free(buf);
|
||||
warn("send msg");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
free(buf);
|
||||
|
||||
/* See if a synchronous reply awaits */
|
||||
{
|
||||
@ -109,13 +115,12 @@ MsgCmd(int ac, char **av)
|
||||
void
|
||||
MsgRead()
|
||||
{
|
||||
u_char buf[2 * sizeof(struct ng_mesg) + BUF_SIZE];
|
||||
struct ng_mesg *const m = (struct ng_mesg *)buf;
|
||||
struct ng_mesg *const ascii = (struct ng_mesg *)m->data;
|
||||
struct ng_mesg *m, *m2;
|
||||
struct ng_mesg *ascii;
|
||||
char path[NG_PATHSIZ];
|
||||
|
||||
/* Get incoming message (in binary form) */
|
||||
if (NgRecvMsg(csock, m, sizeof(buf), path) < 0) {
|
||||
if (NgAllocRecvMsg(csock, &m, path) < 0) {
|
||||
warn("recv incoming message");
|
||||
return;
|
||||
}
|
||||
@ -123,7 +128,7 @@ MsgRead()
|
||||
/* Ask originating node to convert message to ASCII */
|
||||
if (NgSendMsg(csock, path, NGM_GENERIC_COOKIE,
|
||||
NGM_BINARY2ASCII, m, sizeof(*m) + m->header.arglen) < 0
|
||||
|| NgRecvMsg(csock, m, sizeof(buf), NULL) < 0) {
|
||||
|| NgAllocRecvMsg(csock, &m2, NULL) < 0) {
|
||||
printf("Rec'd %s %d from \"%s\":\n",
|
||||
(m->header.flags & NGF_RESP) != 0 ? "response" : "command",
|
||||
m->header.cmd, path);
|
||||
@ -131,10 +136,13 @@ MsgRead()
|
||||
printf("No arguments\n");
|
||||
else
|
||||
DumpAscii(m->data, m->header.arglen);
|
||||
free(m);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Display message in ASCII form */
|
||||
free(m);
|
||||
ascii = (struct ng_mesg *)m2->data;
|
||||
printf("Rec'd %s \"%s\" (%d) from \"%s\":\n",
|
||||
(ascii->header.flags & NGF_RESP) != 0 ? "response" : "command",
|
||||
ascii->header.cmdstr, ascii->header.cmd, path);
|
||||
@ -142,5 +150,6 @@ MsgRead()
|
||||
printf("Args:\t%s\n", ascii->data);
|
||||
else
|
||||
printf("No arguments\n");
|
||||
free(m2);
|
||||
}
|
||||
|
||||
|
@ -57,10 +57,9 @@ static int
|
||||
ShowCmd(int ac, char **av)
|
||||
{
|
||||
char *path;
|
||||
u_char rbuf[16 * 1024];
|
||||
struct ng_mesg *const resp = (struct ng_mesg *) rbuf;
|
||||
struct hooklist *const hlist = (struct hooklist *) resp->data;
|
||||
struct nodeinfo *const ninfo = &hlist->nodeinfo;
|
||||
struct ng_mesg *resp;
|
||||
struct hooklist *hlist;
|
||||
struct nodeinfo *ninfo;
|
||||
int ch, no_hooks = 0;
|
||||
|
||||
/* Get options */
|
||||
@ -94,12 +93,14 @@ ShowCmd(int ac, char **av)
|
||||
warn("send msg");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
if (NgRecvMsg(csock, resp, sizeof(rbuf), NULL) < 0) {
|
||||
if (NgAllocRecvMsg(csock, &resp, NULL) < 0) {
|
||||
warn("recv msg");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
|
||||
/* Show node information */
|
||||
hlist = (struct hooklist *) resp->data;
|
||||
ninfo = &hlist->nodeinfo;
|
||||
if (!*ninfo->name)
|
||||
snprintf(ninfo->name, sizeof(ninfo->name), "%s", UNNAMED);
|
||||
printf(" Name: %-15s Type: %-15s ID: %08x Num hooks: %d\n",
|
||||
@ -125,6 +126,7 @@ ShowCmd(int ac, char **av)
|
||||
peer->type, idbuf, link->peerhook);
|
||||
}
|
||||
}
|
||||
free(resp);
|
||||
return(CMDRTN_OK);
|
||||
}
|
||||
|
||||
|
@ -52,9 +52,8 @@ const struct ngcmd types_cmd = {
|
||||
static int
|
||||
TypesCmd(int ac, char **av __unused)
|
||||
{
|
||||
u_char rbuf[16 * 1024];
|
||||
struct ng_mesg *const resp = (struct ng_mesg *) rbuf;
|
||||
struct typelist *const tlist = (struct typelist *) resp->data;
|
||||
struct ng_mesg *resp;
|
||||
struct typelist *tlist;
|
||||
int rtn = CMDRTN_OK;
|
||||
u_int k;
|
||||
|
||||
@ -72,12 +71,13 @@ TypesCmd(int ac, char **av __unused)
|
||||
warn("send msg");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
if (NgRecvMsg(csock, resp, sizeof(rbuf), NULL) < 0) {
|
||||
if (NgAllocRecvMsg(csock, &resp, NULL) < 0) {
|
||||
warn("recv msg");
|
||||
return(CMDRTN_ERROR);
|
||||
}
|
||||
|
||||
/* Show each type */
|
||||
tlist = (struct typelist *) resp->data;
|
||||
printf("There are %d total types:\n", tlist->numtypes);
|
||||
if (tlist->numtypes > 0) {
|
||||
printf("%15s Number of living nodes\n", "Type name");
|
||||
@ -89,6 +89,7 @@ TypesCmd(int ac, char **av __unused)
|
||||
}
|
||||
|
||||
/* Done */
|
||||
free(resp);
|
||||
return (rtn);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user