codes.c revision 5cd9bd63ac79b9a1a6c7a09230426e181988d09a
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
#pragma ident "%Z%%M% %I% %E% SMI"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <libproc.h>
#include <ctype.h>
#include <string.h>
#include <sys/ipc_impl.h>
#endif /* __i386 */
#include <fcntl.h>
#include <sys/sysconfig.h>
#include <sys/cpc_impl.h>
#include <sys/strredir.h>
#include <netinet/ip_mroute.h>
#include "ramdata.h"
#include "proto.h"
const char *const FCNTLname[] = {
"F_DUPFD",
"F_GETFD",
"F_SETFD",
"F_GETFL",
"F_SETFL",
"F_O_GETLK",
"F_SETLK",
"F_SETLKW",
"F_CHKFL",
"F_DUP2FD",
"F_ALLOCSP",
"F_FREESP",
NULL, /* 12 */
NULL, /* 13 */
"F_GETLK",
NULL, /* 15 */
NULL, /* 16 */
NULL, /* 17 */
NULL, /* 18 */
NULL, /* 19 */
NULL, /* 20 */
NULL, /* 21 */
NULL, /* 22 */
"F_GETOWN",
"F_SETOWN",
"F_REVOKE",
"F_HASREMOTELOCKS",
"F_FREESP64",
NULL, /* 28 */
NULL, /* 29 */
NULL, /* 30 */
NULL, /* 31 */
NULL, /* 32 */
"F_GETLK64",
"F_SETLK64",
"F_SETLKW64",
NULL, /* 36 */
NULL, /* 37 */
NULL, /* 38 */
NULL, /* 39 */
"F_SHARE",
"F_UNSHARE",
"F_SETLK_NBMAND",
"F_SHARE_NBMAND",
"F_SETLK64_NBMAND"
};
const char *const SYSFSname[] = {
"GETFSIND",
"GETFSTYP",
"GETNFSTYP"
};
const char *const PLOCKname[] = {
"UNLOCK",
"PROCLOCK",
"TXTLOCK",
NULL,
"DATLOCK"
};
#define SCONFMIN _CONFIG_NGROUPS
#define SCONFMAX _CONFIG_CPUID_MAX
const char *const SCONFname[] = {
"_CONFIG_NGROUPS", /* 2 */
"_CONFIG_CHILD_MAX", /* 3 */
"_CONFIG_OPEN_FILES", /* 4 */
"_CONFIG_POSIX_VER", /* 5 */
"_CONFIG_PAGESIZE", /* 6 */
"_CONFIG_CLK_TCK", /* 7 */
"_CONFIG_XOPEN_VER", /* 8 */
"_CONFIG_HRESCLK_TCK", /* 9 */
"_CONFIG_PROF_TCK", /* 10 */
"_CONFIG_NPROC_CONF", /* 11 */
"_CONFIG_NPROC_ONLN", /* 12 */
"_CONFIG_AIO_LISTIO_MAX", /* 13 */
"_CONFIG_AIO_MAX", /* 14 */
"_CONFIG_AIO_PRIO_DELTA_MAX", /* 15 */
"_CONFIG_DELAYTIMER_MAX", /* 16 */
"_CONFIG_MQ_OPEN_MAX", /* 17 */
"_CONFIG_MQ_PRIO_MAX", /* 18 */
"_CONFIG_RTSIG_MAX", /* 19 */
"_CONFIG_SEM_NSEMS_MAX", /* 20 */
"_CONFIG_SEM_VALUE_MAX", /* 21 */
"_CONFIG_SIGQUEUE_MAX", /* 22 */
"_CONFIG_SIGRT_MIN", /* 23 */
"_CONFIG_SIGRT_MAX", /* 24 */
"_CONFIG_TIMER_MAX", /* 25 */
"_CONFIG_PHYS_PAGES", /* 26 */
"_CONFIG_AVPHYS_PAGES", /* 27 */
"_CONFIG_COHERENCY", /* 28 */
"_CONFIG_SPLIT_CACHE", /* 29 */
"_CONFIG_ICACHESZ", /* 30 */
"_CONFIG_DCACHESZ", /* 31 */
"_CONFIG_ICACHELINESZ", /* 32 */
"_CONFIG_DCACHELINESZ", /* 33 */
"_CONFIG_ICACHEBLKSZ", /* 34 */
"_CONFIG_DCACHEBLKSZ", /* 35 */
"_CONFIG_DCACHETBLKSZ", /* 36 */
"_CONFIG_ICACHE_ASSOC", /* 37 */
"_CONFIG_DCACHE_ASSOC", /* 38 */
NULL, /* 39 */
NULL, /* 40 */
NULL, /* 41 */
"_CONFIG_MAXPID", /* 42 */
"_CONFIG_STACK_PROT", /* 43 */
"_CONFIG_NPROC_MAX", /* 44 */
"_CONFIG_CPUID_MAX" /* 45 */
};
#define PATHCONFMIN _PC_LINK_MAX
#define PATHCONFMAX _PC_CHOWN_RESTRICTED
const char *const PATHCONFname[] = {
"_PC_LINK_MAX",
"_PC_MAX_CANON",
"_PC_MAX_INPUT",
"_PC_NAME_MAX",
"_PC_PATH_MAX",
"_PC_PIPE_BUF",
"_PC_NO_TRUNC",
"_PC_VDISABLE",
"_PC_CHOWN_RESTRICTED"
};
const struct ioc {
const char *name;
const char *datastruct;
} ioc[] = {
/*
* DLIOCRAW has the same ioctl number as LDCLOSE. Since the LDIOC
* ioctls (for xenix compatibility) are far less likely to be used, we
* give preference to DLIOCRAW, which is the only userland ioctl in the
* DLIOC family.
*/
#ifdef DIOCGETP
#endif
#ifdef DIOCGETC
#endif
#ifdef IFFORMAT
#endif
#ifdef LIOCGETP
#endif
#ifdef JBOOT
#ifdef JTIMO
#endif
#endif
#ifdef I_ANCHOR
#endif
#ifdef TI_GETINFO
#endif
#ifdef TI_CAPABILITY
#endif
#ifdef TI_GETMYNAME
#endif
#ifdef V_PREAD
#endif /* !__i386 */
#endif
/* audio */
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
/* volume management (control ioctls) */
/* volume management (user ioctls) */
/* STREAMS redirection ioctls */
/* the old /proc ioctl() control codes */
/* ioctl's applicable on sockets */
/* DES encryption */
/* Printing system */
"prn_interface_info" },
"prn_1284_device_id" },
"PRNIOC_GET_IFCANIOC_GET_1284_STATUS", NULL },
"prn_timeouts" },
"prn_timeouts" },
/* DTrace */
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
"CRYPTO_OBJECT_GET_ATTRIBUTE_VALUE", NULL },
"CRYPTO_OBJECT_SET_ATTRIBUTE_VALUE", NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
NULL },
"CRYPTO_GET_PROVIDER_MECHANISMS", NULL },
"CRYPTO_GET_PROVIDER_MECHANISM_INFO", NULL },
/* kbio ioctls */
/* aggr link aggregation pseudo driver ioctls */
"laioc_add_rem"},
"laioc_add_rem"},
/* dld data-link ioctls */
/* ZFS ioctls */
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
"zfs_cmd_t" },
/* kssl ioctls */
"kssl_params_t"},
"sockaddr_in"},
};
void
{
const char *inoutstr;
inoutstr = "";
inoutstr = "WR";
else
x, y, nbytes);
else
x, y, nbytes);
}
const char *
{
break;
}
}
/*
* Developers hide ascii ioctl names in the ioctl subcode; for example
* 0x445210 should be printed 'D'<<16|'R'<<8|10. We allow for all
* three high order bytes (called hi, mid and lo) to contain ascii
* characters.
*/
"(('%c'<<24)|('%c'<<16)|('%c'<<8)|%d)",
code & 0xff);
else
}
return (str);
}
const char *
{
break;
}
}
return (str);
}
const char *
{
return (str);
}
const char *
{
return (str);
}
const char *
{
return (str);
}
/* ARGSUSED */
const char *
{
switch (code) {
/* 71 through 74 reserved for VPIX */
/* NFA entry point */
/* Merged Product defines */
}
#endif /* __i386 */
return (str);
}
const char *
{
switch (code) {
}
return (str);
}
const char *
{
return (str);
}
const char *
pathconfname(int code)
{
return (str);
}
const char *
{
arg &= ~SIGNO_MASK;
else {
}
return ((const char *)str);
}
#define ALL_O_FLAGS \
const char *
{
switch (arg & ~ALL_O_FLAGS) {
default:
return ((char *)NULL);
case O_RDONLY:
break;
case O_WRONLY:
break;
case O_RDWR:
break;
}
if (arg & O_NONBLOCK)
if (arg & O_LARGEFILE)
if (arg & O_NOFOLLOW)
return ((const char *)str);
}
const char *
{
switch (arg) {
}
return (str);
}
char *
{
if (arg & 0777)
else
*str = '\0';
if (arg & IPC_NOWAIT)
return (str);
}
const char *
{
char *str;
return ((char *)NULL);
if (arg & MSG_NOERROR)
if (*str == '|')
str++;
return ((const char *)str);
}
const char *
{
char *str;
return ((char *)NULL);
if (*str == '|')
str++;
return ((const char *)str);
}
const char *
{
char *str;
return ((char *)NULL);
if (arg & SHM_RDONLY)
if (*str == '|')
str++;
return ((const char *)str);
}
#define MSGCMDMIN 0
#define MSGCMDMAX IPC_STAT64
"IPC_RMID", /* 10 */
"IPC_SET", /* 11 */
"IPC_STAT", /* 12 */
"IPC_SET64", /* 13 */
"IPC_STAT64", /* 14 */
};
#define SEMCMDMIN 0
#define SEMCMDMAX IPC_STAT64
NULL, /* 0 */
NULL, /* 1 */
NULL, /* 2 */
"GETNCNT", /* 3 */
"GETPID", /* 4 */
"GETVAL", /* 5 */
"GETALL", /* 6 */
"GETZCNT", /* 7 */
"SETVAL", /* 8 */
"SETALL", /* 9 */
"IPC_RMID", /* 10 */
"IPC_SET", /* 11 */
"IPC_STAT", /* 12 */
"IPC_SET64", /* 13 */
"IPC_STAT64", /* 14 */
};
#define SHMCMDMIN 0
#define SHMCMDMAX IPC_STAT64
NULL, /* 0 */
NULL, /* 1 */
NULL, /* 2 */
"SHM_LOCK", /* 3 */
"SHM_UNLOCK", /* 4 */
"IPC_RMID", /* 10 */
"IPC_SET", /* 11 */
"IPC_STAT", /* 12 */
"IPC_SET64", /* 13 */
"IPC_STAT64", /* 14 */
};
const char *
{
return (str);
}
const char *
{
return (str);
}
const char *
{
return (str);
}
const char *
{
switch (arg) {
}
return (str);
}
/* bit map of streams events (I_SETSIG & I_GETSIG) */
const char *
{
return ((char *)NULL);
*str = '\0';
return ((const char *)(str+1));
}
const char *
{
return ((char *)NULL);
*str = '\0';
return ((const char *)(str+1));
}
const char *
{
switch (arg) {
}
return (str);
}
const char *
{
if (arg & ~ALL_MOUNT_FLAGS)
return ((char *)NULL);
*str = '\0';
if (arg & MS_REMOUNT)
if (arg & MS_NOTRUNC)
if (arg & MS_OVERLAY)
if (arg & MS_OPTIONSTR)
if (arg & MS_NOMNTTAB)
return ((char *)NULL); /* use prt_hex() */
return ((const char *)(str+1));
}
const char *
{
return (str);
}
*str = '\0';
if (arg & ST_NOTRUNC)
if (*str == '\0')
return ((const char *)(str+1));
}
const char *
{
switch (arg) {
}
return (str);
}
const char *
{
return (str);
}
*str = '\0';
if (*str == '\0')
return ((const char *)(str+1));
}
const char *
{
switch (arg) {
case IPPROTO_IP: return ("IPPROTO_IP");
case IPPROTO_ICMP: return ("IPPROTO_ICMP");
case IPPROTO_IGMP: return ("IPPROTO_IGMP");
case IPPROTO_GGP: return ("IPPROTO_GGP");
case IPPROTO_ENCAP: return ("IPPROTO_ENCAP");
case IPPROTO_TCP: return ("IPPROTO_TCP");
case IPPROTO_EGP: return ("IPPROTO_EGP");
case IPPROTO_PUP: return ("IPPROTO_PUP");
case IPPROTO_UDP: return ("IPPROTO_UDP");
case IPPROTO_IDP: return ("IPPROTO_IDP");
case IPPROTO_IPV6: return ("IPPROTO_IPV6");
case IPPROTO_ROUTING: return ("IPPROTO_ROUTING");
case IPPROTO_FRAGMENT: return ("IPPROTO_FRAGMENT");
case IPPROTO_RSVP: return ("IPPROTO_RSVP");
case IPPROTO_ESP: return ("IPPROTO_ESP");
case IPPROTO_AH: return ("IPPROTO_AH");
case IPPROTO_ICMPV6: return ("IPPROTO_ICMPV6");
case IPPROTO_NONE: return ("IPPROTO_NONE");
case IPPROTO_DSTOPTS: return ("IPPROTO_DSTOPTS");
case IPPROTO_HELLO: return ("IPPROTO_HELLO");
case IPPROTO_ND: return ("IPPROTO_ND");
case IPPROTO_EON: return ("IPPROTO_EON");
case IPPROTO_PIM: return ("IPPROTO_PIM");
case IPPROTO_SCTP: return ("IPPROTO_SCTP");
case IPPROTO_RAW: return ("IPPROTO_RAW");
default: return (NULL);
}
}