Lines Matching +full:link +full:- +full:name
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
65 #include "link.h"
97 #define device2ng(d) ((d)->type == NG_DEVICE ? (struct ngdevice *)d : NULL)
123 dev->dev.name, len, data); in ng_MessageOut()
132 for (pos = len; pos >= 0; pos--) in ng_MessageOut()
137 dev->dev.name, len + 4, strerror(errno)); in ng_MessageOut()
154 if (NgSendAsciiMsg(dev->cs, path, fmt, data) < 0) { in ng_MessageOut()
156 dev->dev.name, path, fmt, data, strerror(errno)); in ng_MessageOut()
170 struct ngdevice *dev = device2ng(p->handler); in ng_MessageIn()
180 if (dev->cs < 0) in ng_MessageIn()
185 return -1; in ng_MessageIn()
188 FD_SET(dev->cs, r); in ng_MessageIn()
190 ret = select(dev->cs + 1, r, NULL, NULL, &t); in ng_MessageIn()
197 if (NgRecvAsciiMsg(dev->cs, rep, sizeof msgbuf, path)) { in ng_MessageIn()
199 dev->dev.name, strerror(errno)); in ng_MessageIn()
200 return -1; in ng_MessageIn()
203 /* XXX: Should we check rep->header.version ? */ in ng_MessageIn()
206 log_Printf(LogWARN, "%s: Unexpected message: %s\n", dev->dev.name, in ng_MessageIn()
207 rep->header.cmdstr); in ng_MessageIn()
209 log_Printf(LogDEBUG, "%s: Received message: %s\n", dev->dev.name, in ng_MessageIn()
210 rep->header.cmdstr); in ng_MessageIn()
211 len = strlen(rep->header.cmdstr); in ng_MessageIn()
214 memcpy(buf, rep->header.cmdstr, sz); in ng_MessageIn()
223 struct ngdevice *dev = device2ng(p->handler); in ng_Write()
225 switch (p->dl->state) { in ng_Write()
228 return ng_MessageOut(dev, v) ? (ssize_t)n : -1; in ng_Write()
230 return NgSendData(p->fd, dev->hook, v, n) == -1 ? -1 : (ssize_t)n; in ng_Write()
238 switch (p->dl->state) { in ng_Read()
244 return NgRecvData(p->fd, v, n, hook); in ng_Read()
250 struct ngdevice *dev = device2ng(p->handler); in ng_RemoveFromSet()
253 if (r && dev->cs >= 0 && FD_ISSET(dev->cs, r)) { in ng_RemoveFromSet()
254 FD_CLR(dev->cs, r); in ng_RemoveFromSet()
255 log_Printf(LogTIMER, "%s: fdunset(ctrl) %d\n", p->link.name, dev->cs); in ng_RemoveFromSet()
262 p->handler->removefromset = NULL; in ng_RemoveFromSet()
264 p->handler->removefromset = ng_RemoveFromSet; in ng_RemoveFromSet()
272 struct ngdevice *dev = device2ng(p->handler); in ng_Free()
275 if (dev->cs != -1) in ng_Free()
276 close(dev->cs); in ng_Free()
296 *auxfd = dev->cs; in ng_device2iov()
336 dev->cs = *auxfd; in ng_iov2device()
337 (*nauxfd)--; in ng_iov2device()
339 dev->cs = -1; in ng_iov2device()
342 memcpy(&dev->dev, &basengdevice, sizeof dev->dev); in ng_iov2device()
345 physical_SetupStack(p, dev->dev.name, PHYSICAL_FORCE_SYNCNOACF); in ng_iov2device()
346 return &dev->dev; in ng_iov2device()
356 struct ngdevice *dev = device2ng(p->handler); in ng_UpdateSet()
359 switch (p->dl->state) { in ng_UpdateSet()
363 FD_SET(dev->cs, r); in ng_UpdateSet()
364 log_Printf(LogTIMER, "%s(ctrl): fdset(r) %d\n", p->link.name, dev->cs); in ng_UpdateSet()
382 struct ngdevice *dev = device2ng(p->handler); in ng_IsSet()
385 result = dev->cs >= 0 && FD_ISSET(dev->cs, fdset); in ng_IsSet()
396 struct ngdevice *dev = device2ng(p->handler); in ng_DescriptorRead()
398 if (dev->cs >= 0 && FD_ISSET(dev->cs, fdset)) in ng_DescriptorRead()
409 close(dev->cs); in ng_Abandon()
410 close(p->fd); in ng_Abandon()
411 p->fd = -2; /* Nobody else need try.. */ in ng_Abandon()
434 log_Printf(LogWARN, "%s name should not be empty !\n", what); in getsegment()
439 log_Printf(LogWARN, "%s name too long, max %d !\n", what, sz - 1); in getsegment()
476 if (p->fd < 0 && !strncasecmp(p->name.full, NETGRAPH_PREFIX, in ng_Create()
477 sizeof NETGRAPH_PREFIX - 1)) { in ng_Create()
478 p->fd--; /* We own the device - change fd */ in ng_Create()
486 if (ID0NgMkSockNode(NULL, &dev->cs, &p->fd) == -1) { in ng_Create()
490 p->fd = -2; in ng_Create()
494 devp = p->name.full + sizeof NETGRAPH_PREFIX - 1; in ng_Create()
497 p->link.name, devp); in ng_Create()
504 " [nodetype:nodename]\n", p->link.name); in ng_Create()
508 /* Get the hook name of the new node */ in ng_Create()
511 log_Printf(LogDEBUG, "%s: Got hook \"%s\"\n", p->link.name, hook); in ng_Create()
515 " hook\n", p->link.name); in ng_Create()
518 if (devp[-1] != '[') { in ng_Create()
520 " pos %d\n", p->link.name, devp - p->link.name - 1); in ng_Create()
524 /* Use lasthook as the hook name */ in ng_Create()
532 log_Printf(LogDEBUG, "%s: Got node \"%s\"\n", p->link.name, nodetype); in ng_Create()
538 " pos %d\n", p->link.name, devp - p->link.name - 1); in ng_Create()
552 p->link.name, devp); in ng_Create()
560 p->link.name, modname); in ng_Create()
576 p->link.name, in ng_Create()
577 devp - p->name.full + sizeof NETGRAPH_PREFIX - 1); in ng_Create()
582 if (NgSendMsg(dev->cs, path, NGM_GENERIC_COOKIE, NGM_LISTHOOKS, in ng_Create()
585 p->link.name, path, strerror(errno)); in ng_Create()
591 if (NgRecvMsg(dev->cs, resp, sizeof rbuf, NULL) <= 0) { in ng_Create()
593 p->link.name, strerror(errno)); in ng_Create()
597 hlist = (const struct hooklist *)resp->data; in ng_Create()
598 ninfo = &hlist->nodeinfo; in ng_Create()
601 path, ninfo->id); in ng_Create()
604 for (f = 0; f < ninfo->hooks; f++) { in ng_Create()
605 nlink = &hlist->link[f]; in ng_Create()
607 log_Printf(LogDEBUG, " Found %s -> %s (type %s)\n", nlink->ourhook, in ng_Create()
608 nlink->peerhook, nlink->nodeinfo.type); in ng_Create()
610 if (!strcmp(nlink->ourhook, lasthook)) { in ng_Create()
611 if (strcmp(nlink->peerhook, hook) || in ng_Create()
612 strcmp(nlink->nodeinfo.type, nodetype)) { in ng_Create()
614 p->link.name, nlink->ourhook, path); in ng_Create()
622 if (f == ninfo->hooks) { in ng_Create()
626 p->link.name, modname); in ng_Create()
635 log_Printf(LogDEBUG, "%s: Doing MKPEER %s%s -> %s (type %s)\n", in ng_Create()
636 p->link.name, path, mkp.ourhook, mkp.peerhook, nodetype); in ng_Create()
638 if (NgSendMsg(dev->cs, path, NGM_GENERIC_COOKIE, in ng_Create()
646 snprintf(path + len, sizeof path - len, "%s%s", in ng_Create()
647 path[len - 1] == ':' ? "" : ".", lasthook); in ng_Create()
651 if (NgSendMsg(dev->cs, path, NGM_GENERIC_COOKIE, NGM_LISTHOOKS, in ng_Create()
654 p->link.name, path, strerror(errno)); in ng_Create()
660 if (NgRecvMsg(dev->cs, resp, sizeof rbuf, NULL) <= 0) { in ng_Create()
662 p->link.name, strerror(errno)); in ng_Create()
666 hlist = (const struct hooklist *)resp->data; in ng_Create()
667 ninfo = &hlist->nodeinfo; in ng_Create()
670 strcmp(ninfo->name, nodename) && in ng_Create()
671 NgNameNode(dev->cs, path, "%s", nodename) < 0) { in ng_Create()
672 log_Printf(LogWARN, "%s: %s: Cannot name netgraph node: %s\n", in ng_Create()
673 p->link.name, path, strerror(errno)); in ng_Create()
679 log_Printf(LogDEBUG, "%s: Got hook \"%s\"\n", p->link.name, lasthook); in ng_Create()
686 if (devp[-1] == '[') in ng_Create()
687 devp--; in ng_Create()
688 } /* else should moan about devp[-1] being '[' ? */ in ng_Create()
691 snprintf(dev->hook, sizeof dev->hook, "%s", lasthook); in ng_Create()
695 snprintf(ngc.ourhook, sizeof ngc.ourhook, "%s", dev->hook); in ng_Create()
698 log_Printf(LogDEBUG, "Connecting netgraph socket .:%s -> %s.%s\n", in ng_Create()
700 if (NgSendMsg(dev->cs, ".:", NGM_GENERIC_COOKIE, in ng_Create()
707 /* Hook things up so that we monitor dev->cs */ in ng_Create()
708 p->desc.UpdateSet = ng_UpdateSet; in ng_Create()
709 p->desc.IsSet = ng_IsSet; in ng_Create()
710 p->desc.Read = ng_DescriptorRead; in ng_Create()
712 memcpy(&dev->dev, &basengdevice, sizeof dev->dev); in ng_Create()
718 if (getsockname(p->fd, sock, &sz) != -1 && sock->sa_family == AF_NETGRAPH) { in ng_Create()
723 log_Printf(LogPHASE, "%s: Link is a netgraph node\n", p->link.name); in ng_Create()
727 p->link.name, strerror(errno)); in ng_Create()
731 memcpy(&dev->dev, &basengdevice, sizeof dev->dev); in ng_Create()
732 dev->cs = -1; in ng_Create()
733 *dev->hook = '\0'; in ng_Create()
738 physical_SetupStack(p, dev->dev.name, PHYSICAL_FORCE_SYNCNOACF); in ng_Create()
739 return &dev->dev; in ng_Create()