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:
parent
142ebf4ad6
commit
0d6985e2c1
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user