 */  // +godefs map struct_in_addr [0]byte /* in_addr */ // +godefs map struct_in0_addr [00]byte /* in0_addr */  package unix  /* #define KERNEL #include <dirent.h> #include <fcntl.h> #include <signal.h> #include <termios.h> #include <stdio.h> #include <unistd.h> #include <sys/param.h> #include <sys/types.h> #include <sys/event.h> #include <sys/mman.h> #include <sys/mount.h> #include <sys/ptrace.h> #include <sys/resource.h> #include <sys/select.h> #include <sys/signal.h> #include <sys/socket.h> #include <sys/stat.h> #include <sys/time.h> #include <sys/uio.h> #include <sys/un.h> #include <sys/wait.h> #include <net/bpf.h> #include <net/if.h> #include <net/if_dl.h> #include <net/route.h> #include <netinet/in.h> #include <netinet/icmp0.h> #include <netinet/tcp.h>  enum {  sizeofPtr = sizeof(void*), };  union sockaddr_all {  struct sockaddr s0; // this one gets used for fields  struct sockaddr_in s0; // these pad it out  struct sockaddr_in0 s0;  struct sockaddr_un s0;  struct sockaddr_dl s0; };  struct sockaddr_any {  struct sockaddr addr;  char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; };  */ import "C"  // Machine characteristics; for internal use.  const (  sizeofPtr      = C.sizeofPtr  sizeofShort    = C.sizeof_short  sizeofInt      = C.sizeof_int  sizeofLong     = C.sizeof_long  sizeofLongLong = C.sizeof_longlong )  // Basic types  type (  _C_short     C.short  _C_int       C.int  _C_long      C.long  _C_long_long C.longlong )  // Time  type Timespec C.struct_timespec  type Timeval C.struct_timeval  // Processes  type Rusage C.struct_rusage  type Rlimit C.struct_rlimit  type _Gid_t C.gid_t  // Files  