If we get an EPROTONOSUPP error when trying to create the netgraph socket

node, it's most likely because the "ng_socket.ko" KLD is not loaded yet.
So make an attempt to load it before giving up.
This commit is contained in:
Archie Cobbs 1999-10-27 22:17:18 +00:00
parent 142ebf4ad6
commit 0d6985e2c1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=52578
3 changed files with 18 additions and 1 deletions

View File

@ -42,6 +42,7 @@
#define PROMPT "+ "
#define MAX_ARGS 512
#define WHITESPACE " \t\r\n\v\f"
#define NG_SOCKET_KLD "ng_socket.ko"
/* Internal functions */
static int ReadFile(FILE *fp);
@ -134,8 +135,16 @@ main(int ac, char *av[])
av += optind;
/* Create a new socket node */
if (NgMkSockNode(name, &csock, &dsock) < 0)
if (NgMkSockNode(name, &csock, &dsock) < 0) {
if (errno == EPROTONOSUPPORT) {
if (kldload(NG_SOCKET_KLD) < 0)
err(EX_OSERR, "can't load %s", NG_SOCKET_KLD);
if (NgMkSockNode(name, &csock, &dsock) >= 0)
goto gotNode;
}
err(EX_OSERR, "can't create node");
}
gotNode:
/* Do commands as requested */
if (ac == 0) {

View File

@ -60,6 +60,12 @@ will enter interactive mode. Otherwise
.Nm ngctl
will execute the supplied command(s) and exit immediately.
.Pp
If the
.Dv ng_socket.ko
module is not installed in the kernel,
.Nm ngctl
will attempt to install it.
.Pp
The options are as follows:
.Bl -tag -width indent
.It Fl f Ar nodeinfo

View File

@ -38,9 +38,11 @@
*/
#include <sys/types.h>
#include <sys/param.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <sys/linker.h>
#include <stdio.h>
#include <stdlib.h>