Bug #675 » netgraph-remove-xLEN2.patch
lib/libnetgraph/sock.c 2007-06-03 23:41:19.000000000 +0100 | ||
---|---|---|
int
|
||
NgMkSockNode(const char *name, int *csp, int *dsp)
|
||
{
|
||
char namebuf[NG_NODELEN + 1];
|
||
char namebuf[NG_NODESIZ];
|
||
int cs = -1; /* control socket */
|
||
int ds = -1; /* data socket */
|
||
int errnosv;
|
||
... | ... | |
gotNode:
|
||
/* Assign the node the desired name, if any */
|
||
if (name != NULL) {
|
||
u_char sbuf[NG_NODELEN + 3];
|
||
u_char sbuf[NG_NODESIZ + 2];
|
||
struct sockaddr_ng *const sg = (struct sockaddr_ng *) sbuf;
|
||
/* Assign name */
|
||
snprintf(sg->sg_data, NG_NODELEN + 1, "%s", name);
|
||
snprintf(sg->sg_data, NG_NODESIZ, "%s", name);
|
||
sg->sg_family = AF_NETGRAPH;
|
||
sg->sg_len = strlen(sg->sg_data) + 3;
|
||
if (bind(cs, (struct sockaddr *) sg, sg->sg_len) < 0) {
|
||
... | ... | |
/* Create data socket if desired */
|
||
if (dsp != NULL) {
|
||
u_char sbuf[NG_NODELEN + 4];
|
||
u_char sbuf[NG_NODESIZ + 3];
|
||
struct sockaddr_ng *const sg = (struct sockaddr_ng *) sbuf;
|
||
/* Create data socket, initially just "floating" */
|
||
... | ... | |
}
|
||
/* Associate the data socket with the node */
|
||
snprintf(sg->sg_data, NG_NODELEN + 2, "%s:", namebuf);
|
||
snprintf(sg->sg_data, NG_NODESIZ + 1, "%s:", namebuf);
|
||
sg->sg_family = AF_NETGRAPH;
|
||
sg->sg_len = strlen(sg->sg_data) + 3;
|
||
if (connect(ds, (struct sockaddr *) sg, sg->sg_len) < 0) {
|
||
... | ... | |
int
|
||
NgRecvData(int ds, u_char * buf, size_t len, char *hook)
|
||
{
|
||
u_char frombuf[NG_HOOKLEN + sizeof(struct sockaddr_ng)];
|
||
u_char frombuf[NG_HOOKSIZ - 1 + sizeof(struct sockaddr_ng)];
|
||
struct sockaddr_ng *const from = (struct sockaddr_ng *) frombuf;
|
||
int fromlen = sizeof(frombuf);
|
||
int rtn, errnosv;
|
||
... | ... | |
/* Copy hook name */
|
||
if (hook != NULL)
|
||
snprintf(hook, NG_HOOKLEN + 1, "%s", from->sg_data);
|
||
snprintf(hook, NG_HOOKSIZ, "%s", from->sg_data);
|
||
/* Debugging */
|
||
if (_gNgDebugLevel >= 2) {
|
||
... | ... | |
int
|
||
NgSendData(int ds, const char *hook, const u_char * buf, size_t len)
|
||
{
|
||
u_char sgbuf[NG_HOOKLEN + sizeof(struct sockaddr_ng)];
|
||
u_char sgbuf[NG_HOOKSIZ - 1 + sizeof(struct sockaddr_ng)];
|
||
struct sockaddr_ng *const sg = (struct sockaddr_ng *) sgbuf;
|
||
int errnosv;
|
||
/* Set up destination hook */
|
||
sg->sg_family = AF_NETGRAPH;
|
||
snprintf(sg->sg_data, NG_HOOKLEN + 1, "%s", hook);
|
||
snprintf(sg->sg_data, NG_HOOKSIZ, "%s", hook);
|
||
sg->sg_len = strlen(sg->sg_data) + 3;
|
||
/* Debugging */
|
||
-- lib/libnetgraph/msg.c.orig 2007-06-03 23:38:47.000000000 +0100
|
||
++ lib/libnetgraph/msg.c 2007-06-03 23:40:03.000000000 +0100
|
||
... | ... | |
msg.header.token = gMsgId;
|
||
msg.header.flags = NGF_ORIG;
|
||
msg.header.cmd = cmd;
|
||
snprintf(msg.header.cmdstr, NG_CMDSTRLEN + 1, "cmd%d", cmd);
|
||
snprintf(msg.header.cmdstr, NG_CMDSTRSIZ, "cmd%d", cmd);
|
||
/* Deliver message */
|
||
if (NgDeliverMsg(cs, path, &msg, args, arglen) < 0)
|
||
... | ... | |
NgDeliverMsg(int cs, const char *path,
|
||
const struct ng_mesg *hdr, const void *args, size_t arglen)
|
||
{
|
||
u_char sgbuf[NG_PATHLEN + 3];
|
||
u_char sgbuf[NG_PATHSIZ + 2];
|
||
struct sockaddr_ng *const sg = (struct sockaddr_ng *) sgbuf;
|
||
u_char *buf = NULL;
|
||
struct ng_mesg *msg;
|
||
... | ... | |
/* Prepare socket address */
|
||
sg->sg_family = AF_NETGRAPH;
|
||
snprintf(sg->sg_data, NG_PATHLEN + 1, "%s", path);
|
||
snprintf(sg->sg_data, NG_PATHSIZ, "%s", path);
|
||
sg->sg_len = strlen(sg->sg_data) + 3;
|
||
/* Debugging */
|
||
... | ... | |
int
|
||
NgRecvMsg(int cs, struct ng_mesg *rep, size_t replen, char *path)
|
||
{
|
||
u_char sgbuf[NG_PATHLEN + sizeof(struct sockaddr_ng)];
|
||
u_char sgbuf[NG_PATHSIZ - 1 + sizeof(struct sockaddr_ng)];
|
||
struct sockaddr_ng *const sg = (struct sockaddr_ng *) sgbuf;
|
||
int len, sglen = sizeof(sgbuf);
|
||
int errnosv;
|
||
... | ... | |
goto errout;
|
||
}
|
||
if (path != NULL)
|
||
snprintf(path, NG_PATHLEN + 1, "%s", sg->sg_data);
|
||
snprintf(path, NG_PATHSIZ, "%s", sg->sg_data);
|
||
/* Debugging */
|
||
if (_gNgDebugLevel >= 2) {
|
||
-- lib/libnetgraph/netgraph.3.orig 2007-06-03 23:55:34.000000000 +0100
|
||
++ lib/libnetgraph/netgraph.3 2007-06-03 23:53:17.000000000 +0100
|
||
... | ... | |
If
|
||
.Fa "path"
|
||
is non-NULL, it must point to a buffer of at least
|
||
.Dv "NG_PATHLEN + 1"
|
||
.Dv "NG_PATHSIZ"
|
||
bytes, which will be filled in (and NUL terminated) with the path to
|
||
the node from which the message was received.
|
||
.Pp
|
||
... | ... | |
which must be large enough to hold the entire packet. If
|
||
.Fa "hook"
|
||
is non-NULL, it must point to a buffer of at least
|
||
.Dv "NG_HOOKLEN + 1"
|
||
.Dv "NG_HOOKSIZ"
|
||
bytes, which will be filled in (and NUL terminated) with the name of
|
||
the hook on which the data was received.
|
||
.Pp
|