xref: /illumos-gate/usr/src/cmd/ipf/lib/kvatoname.c (revision f3ac6781)
1*f3ac6781SToomas Soome #include "ipf.h"
2*f3ac6781SToomas Soome 
3*f3ac6781SToomas Soome #include <fcntl.h>
4*f3ac6781SToomas Soome #include <sys/ioctl.h>
5*f3ac6781SToomas Soome 
kvatoname(func,iocfunc)6*f3ac6781SToomas Soome char *kvatoname(func, iocfunc)
7*f3ac6781SToomas Soome ipfunc_t func;
8*f3ac6781SToomas Soome ioctlfunc_t iocfunc;
9*f3ac6781SToomas Soome {
10*f3ac6781SToomas Soome 	static char funcname[40];
11*f3ac6781SToomas Soome 	ipfunc_resolve_t res;
12*f3ac6781SToomas Soome 	int fd;
13*f3ac6781SToomas Soome 
14*f3ac6781SToomas Soome 	res.ipfu_addr = func;
15*f3ac6781SToomas Soome 	res.ipfu_name[0] = '\0';
16*f3ac6781SToomas Soome 	fd = -1;
17*f3ac6781SToomas Soome 
18*f3ac6781SToomas Soome 	if ((opts & OPT_DONOTHING) == 0) {
19*f3ac6781SToomas Soome 		fd = open(IPL_NAME, O_RDONLY);
20*f3ac6781SToomas Soome 		if (fd == -1)
21*f3ac6781SToomas Soome 			return NULL;
22*f3ac6781SToomas Soome 	}
23*f3ac6781SToomas Soome 	(void) (*iocfunc)(fd, SIOCFUNCL, &res);
24*f3ac6781SToomas Soome 	if (fd >= 0)
25*f3ac6781SToomas Soome 		close(fd);
26*f3ac6781SToomas Soome 	strncpy(funcname, res.ipfu_name, sizeof(funcname));
27*f3ac6781SToomas Soome 	funcname[sizeof(funcname) - 1] = '\0';
28*f3ac6781SToomas Soome 	return funcname;
29*f3ac6781SToomas Soome }
30