json support
This commit is contained in:
		
							
								
								
									
										460
									
								
								bsmerrno.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										460
									
								
								bsmerrno.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,460 @@
 | 
				
			|||||||
 | 
					// This is an implementation of libbsm
 | 
				
			||||||
 | 
					// Copyright johan@nosd.in 2023
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//go:build freebsd
 | 
				
			||||||
 | 
					// +build freebsd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type BsmErrno struct {
 | 
				
			||||||
 | 
						Errno      uint8
 | 
				
			||||||
 | 
						LocalErrno uint16
 | 
				
			||||||
 | 
						StrError   string
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// From https://github.com/freebsd/freebsd-src/blob/main/sys/sys/errno.h
 | 
				
			||||||
 | 
						EPERM           = 1          /* Operation not permitted */
 | 
				
			||||||
 | 
						ENOENT          = 2          /* No such file or directory */
 | 
				
			||||||
 | 
						ESRCH           = 3          /* No such process */
 | 
				
			||||||
 | 
						EINTR           = 4          /* Interrupted system call */
 | 
				
			||||||
 | 
						EIO             = 5          /* Input/output error */
 | 
				
			||||||
 | 
						ENXIO           = 6          /* Device not configured */
 | 
				
			||||||
 | 
						E2BIG           = 7          /* Argument list too long */
 | 
				
			||||||
 | 
						ENOEXEC         = 8          /* Exec format error */
 | 
				
			||||||
 | 
						EBADF           = 9          /* Bad file descriptor */
 | 
				
			||||||
 | 
						ECHILD          = 10         /* No child processes */
 | 
				
			||||||
 | 
						EDEADLK         = 11         /* Resource deadlock avoided */
 | 
				
			||||||
 | 
						ENOMEM          = 12         /* Cannot allocate memory */
 | 
				
			||||||
 | 
						EACCES          = 13         /* Permission denied */
 | 
				
			||||||
 | 
						EFAULT          = 14         /* Bad address */
 | 
				
			||||||
 | 
						ENOTBLK         = 15         /* Block device required */
 | 
				
			||||||
 | 
						EBUSY           = 16         /* Device busy */
 | 
				
			||||||
 | 
						EEXIST          = 17         /* File exists */
 | 
				
			||||||
 | 
						EXDEV           = 18         /* Cross-device link */
 | 
				
			||||||
 | 
						ENODEV          = 19         /* Operation not supported by device */
 | 
				
			||||||
 | 
						ENOTDIR         = 20         /* Not a directory */
 | 
				
			||||||
 | 
						EISDIR          = 21         /* Is a directory */
 | 
				
			||||||
 | 
						EINVAL          = 22         /* Invalid argument */
 | 
				
			||||||
 | 
						ENFILE          = 23         /* Too many open files in system */
 | 
				
			||||||
 | 
						EMFILE          = 24         /* Too many open files */
 | 
				
			||||||
 | 
						ENOTTY          = 25         /* Inappropriate ioctl for device */
 | 
				
			||||||
 | 
						ETXTBSY         = 26         /* Text file busy */
 | 
				
			||||||
 | 
						EFBIG           = 27         /* File too large */
 | 
				
			||||||
 | 
						ENOSPC          = 28         /* No space left on device */
 | 
				
			||||||
 | 
						ESPIPE          = 29         /* Illegal seek */
 | 
				
			||||||
 | 
						EROFS           = 30         /* Read-only filesystem */
 | 
				
			||||||
 | 
						EMLINK          = 31         /* Too many links */
 | 
				
			||||||
 | 
						EPIPE           = 32         /* Broken pipe */
 | 
				
			||||||
 | 
						EDOM            = 33         /* Numerical argument out of domain */
 | 
				
			||||||
 | 
						ERANGE          = 34         /* Result too large */
 | 
				
			||||||
 | 
						EAGAIN          = 35         /* Resource temporarily unavailable */
 | 
				
			||||||
 | 
						EWOULDBLOCK     = EAGAIN     /* Operation would block */
 | 
				
			||||||
 | 
						EINPROGRESS     = 36         /* Operation now in progress */
 | 
				
			||||||
 | 
						EALREADY        = 37         /* Operation already in progress */
 | 
				
			||||||
 | 
						ENOTSOCK        = 38         /* Socket operation on non-socket */
 | 
				
			||||||
 | 
						EDESTADDRREQ    = 39         /* Destination address required */
 | 
				
			||||||
 | 
						EMSGSIZE        = 40         /* Message too long */
 | 
				
			||||||
 | 
						EPROTOTYPE      = 41         /* Protocol wrong type for socket */
 | 
				
			||||||
 | 
						ENOPROTOOPT     = 42         /* Protocol not available */
 | 
				
			||||||
 | 
						EPROTONOSUPPORT = 43         /* Protocol not supported */
 | 
				
			||||||
 | 
						ESOCKTNOSUPPORT = 44         /* Socket type not supported */
 | 
				
			||||||
 | 
						EOPNOTSUPP      = 45         /* Operation not supported */
 | 
				
			||||||
 | 
						ENOTSUP         = EOPNOTSUPP /* Operation not supported */
 | 
				
			||||||
 | 
						EPFNOSUPPORT    = 46         /* Protocol family not supported */
 | 
				
			||||||
 | 
						EAFNOSUPPORT    = 47         /* Address family not supported by protocol family */
 | 
				
			||||||
 | 
						EADDRINUSE      = 48         /* Address already in use */
 | 
				
			||||||
 | 
						EADDRNOTAVAIL   = 49         /* Can't assign requested address */
 | 
				
			||||||
 | 
						ENETDOWN        = 50         /* Network is down */
 | 
				
			||||||
 | 
						ENETUNREACH     = 51         /* Network is unreachable */
 | 
				
			||||||
 | 
						ENETRESET       = 52         /* Network dropped connection on reset */
 | 
				
			||||||
 | 
						ECONNABORTED    = 53         /* Software caused connection abort */
 | 
				
			||||||
 | 
						ECONNRESET      = 54         /* Connection reset by peer */
 | 
				
			||||||
 | 
						ENOBUFS         = 55         /* No buffer space available */
 | 
				
			||||||
 | 
						EISCONN         = 56         /* Socket is already connected */
 | 
				
			||||||
 | 
						ENOTCONN        = 57         /* Socket is not connected */
 | 
				
			||||||
 | 
						ESHUTDOWN       = 58         /* Can't send after socket shutdown */
 | 
				
			||||||
 | 
						ETOOMANYREFS    = 59         /* Too many references: can't splice */
 | 
				
			||||||
 | 
						ETIMEDOUT       = 60         /* Operation timed out */
 | 
				
			||||||
 | 
						ECONNREFUSED    = 61         /* Connection refused */
 | 
				
			||||||
 | 
						ELOOP           = 62         /* Too many levels of symbolic links */
 | 
				
			||||||
 | 
						ENAMETOOLONG    = 63         /* File name too long */
 | 
				
			||||||
 | 
						EHOSTDOWN       = 64         /* Host is down */
 | 
				
			||||||
 | 
						EHOSTUNREACH    = 65         /* No route to host */
 | 
				
			||||||
 | 
						ENOTEMPTY       = 66         /* Directory not empty */
 | 
				
			||||||
 | 
						EPROCLIM        = 67         /* Too many processes */
 | 
				
			||||||
 | 
						EUSERS          = 68         /* Too many users */
 | 
				
			||||||
 | 
						EDQUOT          = 69         /* Disc quota exceeded */
 | 
				
			||||||
 | 
						ESTALE          = 70         /* Stale NFS file handle */
 | 
				
			||||||
 | 
						EREMOTE         = 71         /* Too many levels of remote in path */
 | 
				
			||||||
 | 
						EBADRPC         = 72         /* RPC struct is bad */
 | 
				
			||||||
 | 
						ERPCMISMATCH    = 73         /* RPC version wrong */
 | 
				
			||||||
 | 
						EPROGUNAVAIL    = 74         /* RPC prog. not avail */
 | 
				
			||||||
 | 
						EPROGMISMATCH   = 75         /* Program version wrong */
 | 
				
			||||||
 | 
						EPROCUNAVAIL    = 76         /* Bad procedure for program */
 | 
				
			||||||
 | 
						ENOLCK          = 77         /* No locks available */
 | 
				
			||||||
 | 
						ENOSYS          = 78         /* Function not implemented */
 | 
				
			||||||
 | 
						EFTYPE          = 79         /* Inappropriate file type or format */
 | 
				
			||||||
 | 
						EAUTH           = 80         /* Authentication error */
 | 
				
			||||||
 | 
						ENEEDAUTH       = 81         /* Need authenticator */
 | 
				
			||||||
 | 
						EIDRM           = 82         /* Identifier removed */
 | 
				
			||||||
 | 
						ENOMSG          = 83         /* No message of desired type */
 | 
				
			||||||
 | 
						EOVERFLOW       = 84         /* Value too large to be stored in data type */
 | 
				
			||||||
 | 
						ECANCELED       = 85         /* Operation canceled */
 | 
				
			||||||
 | 
						EILSEQ          = 86         /* Illegal byte sequence */
 | 
				
			||||||
 | 
						ENOATTR         = 87         /* Attribute not found */
 | 
				
			||||||
 | 
						EDOOFUS         = 88         /* Programming error */
 | 
				
			||||||
 | 
						EBADMSG         = 89         /* Bad message */
 | 
				
			||||||
 | 
						EMULTIHOP       = 90         /* Multihop attempted */
 | 
				
			||||||
 | 
						ENOLINK         = 91         /* Link has been severed */
 | 
				
			||||||
 | 
						EPROTO          = 92         /* Protocol error */
 | 
				
			||||||
 | 
						ENOTCAPABLE     = 93         /* Capabilities insufficient */
 | 
				
			||||||
 | 
						ECAPMODE        = 94         /* Not permitted in capability mode */
 | 
				
			||||||
 | 
						ENOTRECOVERABLE = 95         /* State not recoverable */
 | 
				
			||||||
 | 
						EOWNERDEAD      = 96         /* Previous owner died */
 | 
				
			||||||
 | 
						EINTEGRITY      = 97         /* Integrity check failed */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// From https://github.com/freebsd/freebsd-src/blob/373ffc62c158e52cde86a5b934ab4a51307f9f2e/contrib/openbsm/sys/bsm/audit_errno.h
 | 
				
			||||||
 | 
						BSM_ERRNO_ESUCCESS        = 0
 | 
				
			||||||
 | 
						BSM_ERRNO_EPERM           = 1
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOENT          = 2
 | 
				
			||||||
 | 
						BSM_ERRNO_ESRCH           = 3
 | 
				
			||||||
 | 
						BSM_ERRNO_EINTR           = 4
 | 
				
			||||||
 | 
						BSM_ERRNO_EIO             = 5
 | 
				
			||||||
 | 
						BSM_ERRNO_ENXIO           = 6
 | 
				
			||||||
 | 
						BSM_ERRNO_E2BIG           = 7
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOEXEC         = 8
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADF           = 9
 | 
				
			||||||
 | 
						BSM_ERRNO_ECHILD          = 10
 | 
				
			||||||
 | 
						BSM_ERRNO_EAGAIN          = 11
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOMEM          = 12
 | 
				
			||||||
 | 
						BSM_ERRNO_EACCES          = 13
 | 
				
			||||||
 | 
						BSM_ERRNO_EFAULT          = 14
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTBLK         = 15
 | 
				
			||||||
 | 
						BSM_ERRNO_EBUSY           = 16
 | 
				
			||||||
 | 
						BSM_ERRNO_EEXIST          = 17
 | 
				
			||||||
 | 
						BSM_ERRNO_EXDEV           = 18
 | 
				
			||||||
 | 
						BSM_ERRNO_ENODEV          = 19
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTDIR         = 20
 | 
				
			||||||
 | 
						BSM_ERRNO_EISDIR          = 21
 | 
				
			||||||
 | 
						BSM_ERRNO_EINVAL          = 22
 | 
				
			||||||
 | 
						BSM_ERRNO_ENFILE          = 23
 | 
				
			||||||
 | 
						BSM_ERRNO_EMFILE          = 24
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTTY          = 25
 | 
				
			||||||
 | 
						BSM_ERRNO_ETXTBSY         = 26
 | 
				
			||||||
 | 
						BSM_ERRNO_EFBIG           = 27
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOSPC          = 28
 | 
				
			||||||
 | 
						BSM_ERRNO_ESPIPE          = 29
 | 
				
			||||||
 | 
						BSM_ERRNO_EROFS           = 30
 | 
				
			||||||
 | 
						BSM_ERRNO_EMLINK          = 31
 | 
				
			||||||
 | 
						BSM_ERRNO_EPIPE           = 32
 | 
				
			||||||
 | 
						BSM_ERRNO_EDOM            = 33
 | 
				
			||||||
 | 
						BSM_ERRNO_ERANGE          = 34
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOMSG          = 35
 | 
				
			||||||
 | 
						BSM_ERRNO_EIDRM           = 36
 | 
				
			||||||
 | 
						BSM_ERRNO_ECHRNG          = 37 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EL2NSYNC        = 38 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EL3HLT          = 39 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EL3RST          = 40 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ELNRNG          = 41 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EUNATCH         = 42 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOCSI          = 43 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EL2HLT          = 44 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EDEADLK         = 45
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOLCK          = 46
 | 
				
			||||||
 | 
						BSM_ERRNO_ECANCELED       = 47
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTSUP         = 48
 | 
				
			||||||
 | 
						BSM_ERRNO_EDQUOT          = 49
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADE           = 50 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADR           = 51 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EXFULL          = 52 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOANO          = 53 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADRQC         = 54 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADSLT         = 55 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EDEADLOCK       = 56 /* Solaris-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBFONT          = 57 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EOWNERDEAD      = 58 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTRECOVERABLE = 59 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOSTR          = 60 /* Solaris/Darwin/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENODATA         = 61 /* Solaris/Darwin/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ETIME           = 62 /* Solaris/Darwin/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOSR           = 63 /* Solaris/Darwin/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENONET          = 64 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOPKG          = 65 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EREMOTE         = 66
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOLINK         = 67
 | 
				
			||||||
 | 
						BSM_ERRNO_EADV            = 68 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ESRMNT          = 69 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ECOMM           = 70 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EPROTO          = 71
 | 
				
			||||||
 | 
						BSM_ERRNO_ELOCKUNMAPPED   = 72 /* Solaris-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTACTIVE      = 73 /* Solaris-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EMULTIHOP       = 74
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADMSG         = 77
 | 
				
			||||||
 | 
						BSM_ERRNO_ENAMETOOLONG    = 78
 | 
				
			||||||
 | 
						BSM_ERRNO_EOVERFLOW       = 79
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTUNIQ        = 80 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADFD          = 81 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EREMCHG         = 82 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ELIBACC         = 83 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ELIBBAD         = 84 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ELIBSCN         = 85 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ELIBMAX         = 86 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ELIBEXEC        = 87 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EILSEQ          = 88
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOSYS          = 89
 | 
				
			||||||
 | 
						BSM_ERRNO_ELOOP           = 90
 | 
				
			||||||
 | 
						BSM_ERRNO_ERESTART        = 91
 | 
				
			||||||
 | 
						BSM_ERRNO_ESTRPIPE        = 92 /* Solaris/Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTEMPTY       = 93
 | 
				
			||||||
 | 
						BSM_ERRNO_EUSERS          = 94
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTSOCK        = 95
 | 
				
			||||||
 | 
						BSM_ERRNO_EDESTADDRREQ    = 96
 | 
				
			||||||
 | 
						BSM_ERRNO_EMSGSIZE        = 97
 | 
				
			||||||
 | 
						BSM_ERRNO_EPROTOTYPE      = 98
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOPROTOOPT     = 99
 | 
				
			||||||
 | 
						BSM_ERRNO_EPROTONOSUPPORT = 120
 | 
				
			||||||
 | 
						BSM_ERRNO_ESOCKTNOSUPPORT = 121
 | 
				
			||||||
 | 
						BSM_ERRNO_EOPNOTSUPP      = 122
 | 
				
			||||||
 | 
						BSM_ERRNO_EPFNOSUPPORT    = 123
 | 
				
			||||||
 | 
						BSM_ERRNO_EAFNOSUPPORT    = 124
 | 
				
			||||||
 | 
						BSM_ERRNO_EADDRINUSE      = 125
 | 
				
			||||||
 | 
						BSM_ERRNO_EADDRNOTAVAIL   = 126
 | 
				
			||||||
 | 
						BSM_ERRNO_ENETDOWN        = 127
 | 
				
			||||||
 | 
						BSM_ERRNO_ENETUNREACH     = 128
 | 
				
			||||||
 | 
						BSM_ERRNO_ENETRESET       = 129
 | 
				
			||||||
 | 
						BSM_ERRNO_ECONNABORTED    = 130
 | 
				
			||||||
 | 
						BSM_ERRNO_ECONNRESET      = 131
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOBUFS         = 132
 | 
				
			||||||
 | 
						BSM_ERRNO_EISCONN         = 133
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTCONN        = 134
 | 
				
			||||||
 | 
						BSM_ERRNO_ESHUTDOWN       = 143
 | 
				
			||||||
 | 
						BSM_ERRNO_ETOOMANYREFS    = 144
 | 
				
			||||||
 | 
						BSM_ERRNO_ETIMEDOUT       = 145
 | 
				
			||||||
 | 
						BSM_ERRNO_ECONNREFUSED    = 146
 | 
				
			||||||
 | 
						BSM_ERRNO_EHOSTDOWN       = 147
 | 
				
			||||||
 | 
						BSM_ERRNO_EHOSTUNREACH    = 148
 | 
				
			||||||
 | 
						BSM_ERRNO_EALREADY        = 149
 | 
				
			||||||
 | 
						BSM_ERRNO_EINPROGRESS     = 150
 | 
				
			||||||
 | 
						BSM_ERRNO_ESTALE          = 151
 | 
				
			||||||
 | 
						BSM_ERRNO_EPROCLIM        = 190 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADRPC         = 191 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ERPCMISMATCH    = 192 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EPROGUNAVAIL    = 193 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EPROGMISMATCH   = 194 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EPROCUNAVAIL    = 195 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EFTYPE          = 196 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EAUTH           = 197 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENEEDAUTH       = 198 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOATTR         = 199 /* FreeBSD/Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EDOOFUS         = 200 /* FreeBSD-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EJUSTRETURN     = 201 /* FreeBSD-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOIOCTL        = 202 /* FreeBSD-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EDIRIOCTL       = 203 /* FreeBSD-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EPWROFF         = 204 /* Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EDEVERR         = 205 /* Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADEXEC        = 206 /* Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADARCH        = 207 /* Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ESHLIBVERS      = 208 /* Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EBADMACHO       = 209 /* Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EPOLICY         = 210 /* Darwin-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EDOTDOT         = 211 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EUCLEAN         = 212 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTNAM         = 213 /* Linux(Xenix?)-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENAVAIL         = 214 /* Linux(Xenix?)-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EISNAM          = 215 /* Linux(Xenix?)-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EREMOTEIO       = 216 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOMEDIUM       = 217 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EMEDIUMTYPE     = 218 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOKEY          = 219 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EKEYEXPIRED     = 220 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EKEYREVOKED     = 221 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EKEYREJECTED    = 222 /* Linux-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ENOTCAPABLE     = 223 /* FreeBSD-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_ECAPMODE        = 224 /* FreeBSD-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_EINTEGRITY      = 225 /* FreeBSD-specific. */
 | 
				
			||||||
 | 
						BSM_ERRNO_UNKNOWN         = 250 /* OpenBSM-specific. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// From https://github.com/freebsd/freebsd-src/blob/373ffc62c158e52cde86a5b934ab4a51307f9f2e/sys/security/audit/bsm_errno.c
 | 
				
			||||||
 | 
						// But we dont want to use int16, so use 255
 | 
				
			||||||
 | 
						//ERRNO_NO_LOCAL_MAPPING int16 = -600
 | 
				
			||||||
 | 
						ERRNO_NO_LOCAL_MAPPING = 255
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						BsmErrnos = []BsmErrno{
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESUCCESS, 0, "Success"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPERM, EPERM, "Operation not permitted"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOENT, ENOENT, "No such file or directory"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESRCH, ESRCH, "No such process"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EINTR, EINTR, "Interrupted system call"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EIO, EIO, "Input/output error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENXIO, ENXIO, "Device not configured"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_E2BIG, E2BIG, "Argument list too long"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOEXEC, ENOEXEC, "Exec format error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADF, EBADF, "Bad file descriptor"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECHILD, ECHILD, "No child processes"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EAGAIN, EAGAIN, "Resource temporarily unavailable"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOMEM, ENOMEM, "Cannot allocate memory"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EACCES, EACCES, "Permission denied"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EFAULT, EFAULT, "Bad address"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTBLK, ENOTBLK, "Block device required"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBUSY, EBUSY, "Device busy"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EEXIST, EEXIST, "File exists"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EXDEV, EXDEV, "Cross-device link"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENODEV, ENODEV, "Operation not supported by device"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTDIR, ENOTDIR, "Not a directory"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EISDIR, EISDIR, "Is a directory"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EINVAL, EINVAL, "Invalid argument"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENFILE, ENFILE, "Too many open files in system"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EMFILE, EMFILE, "Too many open files"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTTY, ENOTTY, "Inappropriate ioctl for device"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ETXTBSY, ETXTBSY, "Text file busy"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EFBIG, EFBIG, "File too large"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOSPC, ENOSPC, "No space left on device"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESPIPE, ESPIPE, "Illegal seek"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EROFS, EROFS, "Read-only file system"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EMLINK, EMLINK, "Too many links"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPIPE, EPIPE, "Broken pipe"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDOM, EDOM, "Numerical argument out of domain"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ERANGE, ERANGE, "Result too large"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOMSG, ENOMSG, "No message of desired type"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EIDRM, EIDRM, "Identifier removed"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECHRNG, ERRNO_NO_LOCAL_MAPPING, "Channel number out of range"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EL2NSYNC, ERRNO_NO_LOCAL_MAPPING, "Level 2 not synchronized"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EL3HLT, ERRNO_NO_LOCAL_MAPPING, "Level 3 halted"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EL3RST, ERRNO_NO_LOCAL_MAPPING, "Level 3 reset"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELNRNG, ERRNO_NO_LOCAL_MAPPING, "Link number out of range"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EUNATCH, ERRNO_NO_LOCAL_MAPPING, "Protocol driver not attached"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOCSI, ERRNO_NO_LOCAL_MAPPING, "No CSI structure available"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EL2HLT, ERRNO_NO_LOCAL_MAPPING, "Level 2 halted"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDEADLK, EDEADLK, "Resource deadlock avoided"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOLCK, ENOLCK, "No locks available"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECANCELED, ECANCELED, "Operation canceled"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTSUP, ENOTSUP, "Operation not supported"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDQUOT, EDQUOT, "Disc quota exceeded"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADE, ERRNO_NO_LOCAL_MAPPING, "Invalid exchange"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADR, ERRNO_NO_LOCAL_MAPPING, "Invalid request descriptor"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EXFULL, ERRNO_NO_LOCAL_MAPPING, "Exchange full"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOANO, ERRNO_NO_LOCAL_MAPPING, "No anode"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADRQC, ERRNO_NO_LOCAL_MAPPING, "Invalid request descriptor"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADSLT, ERRNO_NO_LOCAL_MAPPING, "Invalid slot"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDEADLOCK, ERRNO_NO_LOCAL_MAPPING, "Resource deadlock avoided"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBFONT, ERRNO_NO_LOCAL_MAPPING, "Bad font file format"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EOWNERDEAD, ERRNO_NO_LOCAL_MAPPING, "Process died with the lock"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EINTEGRITY, ERRNO_NO_LOCAL_MAPPING, "Integrity check failed"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTRECOVERABLE, ERRNO_NO_LOCAL_MAPPING, "Lock is not recoverable"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOSTR, ERRNO_NO_LOCAL_MAPPING, "Device not a stream"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENONET, ERRNO_NO_LOCAL_MAPPING, "Machine is not on the network"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOPKG, ERRNO_NO_LOCAL_MAPPING, "Package not installed"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EREMOTE, EREMOTE, "Too many levels of remote in path"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOLINK, ERRNO_NO_LOCAL_MAPPING, "Link has been severed"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EADV, ERRNO_NO_LOCAL_MAPPING, "Advertise error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESRMNT, ERRNO_NO_LOCAL_MAPPING, "srmount error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECOMM, ERRNO_NO_LOCAL_MAPPING, "Communication error on send"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPROTO, ERRNO_NO_LOCAL_MAPPING, "Protocol error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELOCKUNMAPPED, ERRNO_NO_LOCAL_MAPPING, "Locked lock was unmapped"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTACTIVE, ERRNO_NO_LOCAL_MAPPING, "Facility is not active"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EMULTIHOP, ERRNO_NO_LOCAL_MAPPING, "Multihop attempted"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADMSG, ERRNO_NO_LOCAL_MAPPING, "Bad message"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENAMETOOLONG, ENAMETOOLONG, "File name too long"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EOVERFLOW, EOVERFLOW, "Value too large to be stored in data type"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTUNIQ, ERRNO_NO_LOCAL_MAPPING, "Given log name not unique"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADFD, ERRNO_NO_LOCAL_MAPPING, "Given f.d. invalid for this operation"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EREMCHG, ERRNO_NO_LOCAL_MAPPING, "Remote address changed"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELIBACC, ERRNO_NO_LOCAL_MAPPING, "Can't access a needed shared lib"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELIBBAD, ERRNO_NO_LOCAL_MAPPING, "Accessing a corrupted shared lib"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELIBSCN, ERRNO_NO_LOCAL_MAPPING, ".lib section in a.out corrupted"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELIBMAX, ERRNO_NO_LOCAL_MAPPING, "Attempting to link in too many libs"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELIBEXEC, ERRNO_NO_LOCAL_MAPPING, "Attempting to exec a shared library"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EILSEQ, EILSEQ, "Illegal byte sequence"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOSYS, ENOSYS, "Function not implemented"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ELOOP, ELOOP, "Too many levels of symbolic links"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ERESTART, ERRNO_NO_LOCAL_MAPPING, "Restart syscall"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESTRPIPE, ERRNO_NO_LOCAL_MAPPING, "If pipe/FIFO, don't sleep in stream head"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTEMPTY, ENOTEMPTY, "Directory not empty"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EUSERS, EUSERS, "Too many users"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTSOCK, ENOTSOCK, "Socket operation on non-socket"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDESTADDRREQ, EDESTADDRREQ, "Destination address required"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EMSGSIZE, EMSGSIZE, "Message too long"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPROTOTYPE, EPROTOTYPE, "Protocol wrong type for socket"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOPROTOOPT, ENOPROTOOPT, "Protocol not available"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPROTONOSUPPORT, EPROTONOSUPPORT, "Protocol not supported"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESOCKTNOSUPPORT, ESOCKTNOSUPPORT, "Socket type not supported"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EOPNOTSUPP, EOPNOTSUPP, "Operation not supported"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPFNOSUPPORT, EPFNOSUPPORT, "Protocol family not supported"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EAFNOSUPPORT, EAFNOSUPPORT, "Address family not supported by protocol family"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EADDRINUSE, EADDRINUSE, "Address already in use"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EADDRNOTAVAIL, EADDRNOTAVAIL, "Can't assign requested address"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENETDOWN, ENETDOWN, "Network is down"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENETRESET, ENETRESET, "Network dropped connection on reset"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECONNABORTED, ECONNABORTED, "Software caused connection abort"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECONNRESET, ECONNRESET, "Connection reset by peer"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOBUFS, ENOBUFS, "No buffer space available"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EISCONN, EISCONN, "Socket is already connected"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTCONN, ENOTCONN, "Socket is not connected"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESHUTDOWN, ESHUTDOWN, "Can't send after socket shutdown"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ETOOMANYREFS, ETOOMANYREFS, "Too many references: can't splice"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ETIMEDOUT, ETIMEDOUT, "Operation timed out"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECONNREFUSED, ECONNREFUSED, "Connection refused"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EHOSTDOWN, EHOSTDOWN, "Host is down"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EHOSTUNREACH, EHOSTUNREACH, "No route to host"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EALREADY, EALREADY, "Operation already in progress"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EINPROGRESS, EINPROGRESS, "Operation now in progress"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESTALE, ESTALE, "Stale NFS file handle"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPROCLIM, EPROCLIM, "Too many processes"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADRPC, EBADRPC, "RPC struct is bad"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ERPCMISMATCH, ERPCMISMATCH, "RPC version wrong"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPROGUNAVAIL, EPROGUNAVAIL, "RPC prog. not avail"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPROGMISMATCH, EPROGMISMATCH, "RPC version wrong"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPROCUNAVAIL, EPROCUNAVAIL, "Bad procedure for program"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EFTYPE, EFTYPE, "Inappropriate file type or format"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EAUTH, EAUTH, "Authenticateion error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENEEDAUTH, ENEEDAUTH, "Need authenticator"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOATTR, ENOATTR, "Attribute not found"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDOOFUS, EDOOFUS, "Programming error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EJUSTRETURN, ERRNO_NO_LOCAL_MAPPING, "Just return"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOIOCTL, ERRNO_NO_LOCAL_MAPPING, "ioctl not handled by this layer"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDIRIOCTL, ERRNO_NO_LOCAL_MAPPING, "do direct ioctl in GEOM"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPWROFF, ERRNO_NO_LOCAL_MAPPING, "Device power is off"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDEVERR, ERRNO_NO_LOCAL_MAPPING, "Device error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADEXEC, ERRNO_NO_LOCAL_MAPPING, "Bad executable"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADARCH, ERRNO_NO_LOCAL_MAPPING, "Bad CPU type in executable"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ESHLIBVERS, ERRNO_NO_LOCAL_MAPPING, "Shared library version mismatch"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EBADMACHO, ERRNO_NO_LOCAL_MAPPING, "Malformed Macho file"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EPOLICY, ERRNO_NO_LOCAL_MAPPING, "Operation failed by policy"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EDOTDOT, ERRNO_NO_LOCAL_MAPPING, "RFS specific error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EUCLEAN, ERRNO_NO_LOCAL_MAPPING, "Structure needs cleaning"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTNAM, ERRNO_NO_LOCAL_MAPPING, "Not a XENIX named type file"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENAVAIL, ERRNO_NO_LOCAL_MAPPING, "No XENIX semaphores available"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EISNAM, ERRNO_NO_LOCAL_MAPPING, "Is a named type file"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EREMOTEIO, ERRNO_NO_LOCAL_MAPPING, "Remote I/O error"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOMEDIUM, ERRNO_NO_LOCAL_MAPPING, "No medium found"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EMEDIUMTYPE, ERRNO_NO_LOCAL_MAPPING, "Wrong medium type"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOKEY, ERRNO_NO_LOCAL_MAPPING, "Required key not available"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EKEYEXPIRED, ERRNO_NO_LOCAL_MAPPING, "Key has expired"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EKEYREVOKED, ERRNO_NO_LOCAL_MAPPING, "Key has been revoked"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_EKEYREJECTED, ERRNO_NO_LOCAL_MAPPING, "Key was rejected by service"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ENOTCAPABLE, ENOTCAPABLE, "Capabilities insufficient"},
 | 
				
			||||||
 | 
							{BSM_ERRNO_ECAPMODE, ECAPMODE, "Not permitted in capability mode"},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func lookupErrno(errno uint8) (BsmErrno, error) {
 | 
				
			||||||
 | 
						var res BsmErrno
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, res = range BsmErrnos {
 | 
				
			||||||
 | 
							if res.Errno == errno {
 | 
				
			||||||
 | 
								return res, nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return res, fmt.Errorf("ErrNo not found")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user