From c855ea1809941a9fcd8ec8f17194d7545743b050 Mon Sep 17 00:00:00 2001
From: Michael Tuexen <tuexen@fh-muenster.de>
Date: Fri, 4 May 2018 21:43:57 +0200
Subject: [PATCH] Add constants for Solaris 11.4.

Remove the inclusion of netinet/sctp.h after enabling SCTP support
in platfroms.h.
---
 gtests/net/packetdrill/Makefile.common   |   1 +
 gtests/net/packetdrill/symbols_solaris.c | 538 +++++++++++++++++++++++
 2 files changed, 539 insertions(+)
 create mode 100644 gtests/net/packetdrill/symbols_solaris.c

diff --git a/gtests/net/packetdrill/Makefile.common b/gtests/net/packetdrill/Makefile.common
index ced71661..7cf044e3 100644
--- a/gtests/net/packetdrill/Makefile.common
+++ b/gtests/net/packetdrill/Makefile.common
@@ -20,6 +20,7 @@ packetdrill-lib := \
          symbols_openbsd.o \
          symbols_netbsd.o \
          symbols_darwin.o \
+         symbols_solaris.o \
          gre_packet.o icmp_packet.o ip_packet.o \
          sctp_packet.o tcp_packet.o udp_packet.o udplite_packet.o \
          mpls_packet.o \
diff --git a/gtests/net/packetdrill/symbols_solaris.c b/gtests/net/packetdrill/symbols_solaris.c
new file mode 100644
index 00000000..e6b202ed
--- /dev/null
+++ b/gtests/net/packetdrill/symbols_solaris.c
@@ -0,0 +1,538 @@
+/*
+ * Copyright 2013 Google Inc.
+ * Copyright 2018 Michael Tuexen
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+/*
+ * Author: tuexen@fh-muenster.de (Michael Tuexen)
+ *
+ * Definitions of strace-style symbols for Solaris 11.4.
+ * Allows us to map from symbolic strings to integers for system call inputs.
+ */
+
+#if defined(__SunOS_5_11)
+
+#include "symbols.h"
+
+#include <errno.h>
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/udp.h>
+#include <netinet/sctp.h> /* XXX MT: Remove after uncomment in platforms.h */
+#include <poll.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/filio.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include "tcp.h"
+
+/* A table of platform-specific string->int mappings. */
+struct int_symbol platform_symbols_table[] = {
+
+	/* /usr/include/sys/socket.h */
+	{ SO_DEBUG,                         "SO_DEBUG"                        },
+	{ SO_ACCEPTCONN,                    "SO_ACCEPTCONN"                   },
+	{ SO_REUSEADDR,                     "SO_REUSEADDR"                    },
+	{ SO_KEEPALIVE,                     "SO_KEEPALIVE"                    },
+	{ SO_DONTROUTE,                     "SO_DONTROUTE"                    },
+	{ SO_BROADCAST,                     "SO_BROADCAST"                    },
+	{ SO_USELOOPBACK,                   "SO_USELOOPBACK"                  },
+	{ SO_LINGER,                        "SO_LINGER"                       },
+	{ SO_OOBINLINE,                     "SO_OOBINLINE"                    },
+	{ SO_DGRAM_ERRIND,                  "SO_DGRAM_ERRIND"                 },
+	{ SO_RECVUCRED,                     "SO_RECVUCRED"                    },
+	{ SO_NOSIGPIPE,                     "SO_NOSIGPIPE"                    },
+	{ SO_SNDBUF,                        "SO_SNDBUF"                       },
+	{ SO_RCVBUF,                        "SO_RCVBUF"                       },
+	{ SO_SNDLOWAT,                      "SO_SNDLOWAT"                     },
+	{ SO_RCVLOWAT,                      "SO_RCVLOWAT"                     },
+	{ SO_SNDTIMEO,                      "SO_SNDTIMEO"                     },
+	{ SO_RCVTIMEO,                      "SO_RCVTIMEO"                     },
+	{ SO_ERROR,                         "SO_ERROR"                        },
+	{ SO_TYPE,                          "SO_TYPE"                         },
+	{ SO_PROTOTYPE,                     "SO_PROTOTYPE"                    },
+	{ SO_ANON_MLP,                      "SO_ANON_MLP"                     },
+	{ SO_MAC_EXEMPT,                    "SO_MAC_EXEMPT"                   },
+	{ SO_DOMAIN,                        "SO_DOMAIN"                       },
+	{ SO_RCVPSH,                        "SO_RCVPSH"                       },
+	{ SO_REUSEPORT,                     "SO_REUSEPORT"                    },
+	{ SO_PASSIVE_CONNECT,               "SO_PASSIVE_CONNECT"              },
+	{ SO_SECATTR,                       "SO_SECATTR"                      },
+	{ SO_TIMESTAMP,                     "SO_TIMESTAMP"                    },
+	{ SO_ALLZONES,                      "SO_ALLZONES"                     },
+	{ SO_EXCLBIND,                      "SO_EXCLBIND"                     },
+	{ SO_MAC_IMPLICIT,                  "SO_MAC_IMPLICIT"                 },
+	{ SO_VRRP,                          "SO_VRRP"                         },
+	{ SO_FLOW_SLA,                      "SO_FLOW_SLA"                     },
+	{ SO_LISTENQLIMIT,                  "SO_LISTENQLIMIT"                 },
+	{ SO_FLOW_NAME,                     "SO_FLOW_NAME"                    },
+	{ SO_NET_KERNEL_BYPASS,             "SO_NET_KERNEL_BYPASS"            },
+	{ SO_NET_KERNEL_BYPASS_STATS,       "SO_NET_KERNEL_BYPASS_STATS"      },
+
+	/* /usr/include/netinet/in.h */
+	{ IP_OPTIONS,                       "IP_OPTIONS"                      },
+	{ IP_HDRINCL,                       "IP_HDRINCL"                      },
+	{ IP_TOS,                           "IP_TOS"                          },
+	{ IP_TTL,                           "IP_TTL"                          },
+	{ IP_RECVOPTS,                      "IP_RECVOPTS"                     },
+	{ IP_RECVRETOPTS,                   "IP_RECVRETOPTS"                  },
+	{ IP_RECVDSTADDR,                   "IP_RECVDSTADDR"                  },
+	{ IP_RETOPTS,                       "IP_RETOPTS"                      },
+	{ IP_RECVIF,                        "IP_RECVIF"                       },
+	{ IP_RECVTTL,                       "IP_RECVTTL"                      },
+	{ IP_PKTINFO,                       "IP_PKTINFO,"                     },
+	{ IP_RECVPKTINFO,                   "IP_RECVPKTINFO"                  },
+	{ IP_DONTFRAG,                      "IP_DONTFRAG"                     },
+	{ IP_BOUND_IF,                      "IP_BOUND_IF"                     },
+	{ IP_UNSPEC_SRC,                    "IP_UNSPEC_SRC"                   },
+	{ IP_REUSEADDR,                     "IP_REUSEADDR"                    },
+	{ IP_DONTROUTE,                     "IP_DONTROUTE,"                   },
+	{ IP_BROADCAST,                     "IP_BROADCAST"                    },
+	{ IPV6_UNICAST_HOPS,                "IPV6_UNICAST_HOPS"               },
+	{ IPV6_PKTINFO,                     "IPV6_PKTINFO"                    },
+	{ IPV6_HOPLIMIT,                    "IPV6_HOPLIMIT"                   },
+	{ IPV6_NEXTHOP,                     "IPV6_NEXTHOP"                    },
+	{ IPV6_HOPOPTS,                     "IPV6_HOPOPTS"                    },
+	{ IPV6_DSTOPTS,                     "IPV6_DSTOPTS"                    },
+	{ IPV6_RTHDR,                       "IPV6_RTHDR"                      },
+	{ IPV6_RTHDRDSTOPTS,                "IPV6_RTHDRDSTOPTS"               },
+	{ IPV6_RECVPKTINFO,                 "IPV6_RECVPKTINFO"                },
+	{ IPV6_RECVHOPLIMIT,                "IPV6_RECVHOPLIMIT"               },
+	{ IPV6_RECVHOPOPTS,                 "IPV6_RECVHOPOPTS"                },
+	{ IPV6_RECVRTHDR,                   "IPV6_RECVRTHDR"                  },
+	{ IPV6_CHECKSUM,                    "IPV6_CHECKSUM"                   },
+	{ IPV6_RECVTCLASS,                  "IPV6_RECVTCLASS"                 },
+	{ IPV6_USE_MIN_MTU,                 "IPV6_USE_MIN_MTU"                },
+	{ IPV6_DONTFRAG,                    "IPV6_DONTFRAG"                   },
+	{ IPV6_SEC_OPT,                     "IPV6_SEC_OPT"                    },
+	{ IPV6_SRC_PREFERENCES,             "IPV6_SRC_PREFERENCES"            },
+	{ IPV6_RECVPATHMTU,                 "IPV6_RECVPATHMTU"                },
+	{ IPV6_PATHMTU,                     "IPV6_PATHMTU"                    },
+	{ IPV6_TCLASS,                      "IPV6_TCLASS"                     },
+	{ IPV6_V6ONLY,                      "IPV6_V6ONLY"                     },
+	{ IPV6_RECVDSTOPTS,                 "IPV6_RECVDSTOPTS"                },
+	{ IPV6_BOUND_IF,                    "IPV6_BOUND_IF"                   },
+	{ IPV6_UNSPEC_SRC,                  "IPV6_UNSPEC_SRC"                 },
+
+	/* /usr/include/netinet/sctp.h */
+	{ SCTP_RTOINFO,                     "SCTP_RTOINFO"                    },
+	{ SCTP_ASSOCINFO,                   "SCTP_ASSOCINFO"                  },
+	{ SCTP_INITMSG,                     "SCTP_INITMSG"                    },
+	{ SCTP_NODELAY,                     "SCTP_NODELAY"                    },
+	{ SCTP_AUTOCLOSE,                   "SCTP_AUTOCLOSE"                  },
+	{ SCTP_SET_PEER_PRIMARY_ADDR,       "SCTP_SET_PEER_PRIMARY_ADDR"      },
+	{ SCTP_PRIMARY_ADDR,                "SCTP_PRIMARY_ADDR"               },
+	{ SCTP_ADAPTATION_LAYER,            "SCTP_ADAPTATION_LAYER"           },
+	{ SCTP_DISABLE_FRAGMENTS,           "SCTP_DISABLE_FRAGMENTS"          },
+	{ SCTP_PEER_ADDR_PARAMS,            "SCTP_PEER_ADDR_PARAMS"           },
+	{ SCTP_EVENTS,                      "SCTP_EVENTS"                     },
+	{ SCTP_I_WANT_MAPPED_V4_ADDR,       "SCTP_I_WANT_MAPPED_V4_ADDR"      },
+	{ SCTP_MAXSEG,                      "SCTP_MAXSEG"                     },
+	{ SCTP_STATUS,                      "SCTP_STATUS"                     },
+	{ SCTP_GET_PEER_ADDR_INFO,          "SCTP_GET_PEER_ADDR_INFO"         },
+	{ SCTP_PRSCTP,                      "SCTP_PRSCTP"                     },
+	{ SCTP_GET_ASSOC_STATS,             "SCTP_GET_ASSOC_STATS"            },
+	{ SCTP_CONGESTION,                  "SCTP_CONGESTION"                 },
+	{ SCTP_EVENT,                       "SCTP_EVENT"                      },
+	{ SCTP_HMAC_IDENT,                  "SCTP_HMAC_IDENT"                 },
+	{ SCTP_DELAYED_SACK,                "SCTP_DELAYED_SACK"               },
+	{ SCTP_FRAGMENT_INTERLEAVE,         "SCTP_FRAGMENT_INTERLEAVE"        },
+	{ SCTP_PARTIAL_DELIVERY_POINT,      "SCTP_PARTIAL_DELIVERY_POINT"     },
+	{ SCTP_MAX_BURST,                   "SCTP_MAX_BURST"                  },
+	{ SCTP_CONTEXT,                     "SCTP_CONTEXT"                    },
+	{ SCTP_EXPLICIT_EOR,                "SCTP_EXPLICIT_EOR"               },
+	{ SCTP_REUSE_PORT,                  "SCTP_REUSE_PORT"                 },
+	{ SCTP_RECVRCVINFO,                 "SCTP_RECVRCVINFO"                },
+	{ SCTP_RECVNXTINFO,                 "SCTP_RECVNXTINFO"                },
+	{ SCTP_DEFAULT_SNDINFO,             "SCTP_DEFAULT_SNDINFO"            },
+	{ SCTP_GET_ASSOC_NUMBER,            "SCTP_GET_ASSOC_NUMBER"           },
+	{ SCTP_NO_INTERLEAVE,               "SCTP_NO_INTERLEAVE"              },
+	{ SCTP_ASSOC_INTERLEAVE,            "SCTP_ASSOC_INTERLEAVE"           },
+	{ SCTP_COMPLETE_INTERLEAVE,         "SCTP_COMPLETE_INTERLEAVE"        },
+	{ SCTP_SNDRCV,                      "SCTP_SNDRCV"                     },
+	{ SCTP_INIT,                        "SCTP_INIT"                       },
+	{ SCTP_SNDINFO,                     "SCTP_SNDINFO"                    },
+	{ SCTP_RCVINFO,                     "SCTP_RCVINFO"                    },
+	{ SCTP_NXTINFO,                     "SCTP_NXTINFO"                    },
+	{ SCTP_PRINFO,                      "SCTP_PRINFO"                     },
+	{ SCTP_AUTHINFO,                    "SCTP_AUTHINFO"                   },
+	{ SCTP_DSTADDRV4,                   "SCTP_DSTADDRV4"                  },
+	{ SCTP_DSTADDRV6,                   "SCTP_DSTADDRV6"                  },
+	{ SCTP_UNORDERED,                   "SCTP_UNORDERED"                  },
+	{ SCTP_ABORT,                       "SCTP_ABORT"                      },
+	{ SCTP_EOF,                         "SCTP_EOF"                        },
+	{ SCTP_ADDR_OVER,                   "SCTP_ADDR_OVER"                  },
+	{ SCTP_SENDALL,                     "SCTP_SENDALL"                    },
+	{ SCTP_EOR,                         "SCTP_EOR"                        },
+	{ SCTP_COMPLETE,                    "SCTP_COMPLETE"                   },
+	{ SCTP_NOTIFICATION,                "SCTP_NOTIFICATION"               },
+	{ SCTP_PR_SCTP_NONE,                "SCTP_PR_SCTP_NONE"               },
+	{ SCTP_PR_SCTP_TTL,                 "SCTP_PR_SCTP_TTL"                },
+	{ SCTP_RECVV_NOINFO,                "SCTP_RECVV_NOINFO"               },
+	{ SCTP_RECVV_RCVINFO,               "SCTP_RECVV_RCVINFO"              },
+	{ SCTP_RECVV_NXTINFO,               "SCTP_RECVV_NXTINFO"              },
+	{ SCTP_RECVV_RN,                    "SCTP_RECVV_RN"                   },
+	{ SCTP_SEND_SNDINFO_VALID,          "SCTP_SEND_SNDINFO_VALID"         },
+	{ SCTP_SEND_PRINFO_VALID,           "SCTP_SEND_PRINFO_VALID"          },
+	{ SCTP_SEND_AUTHINFO_VALID,         "SCTP_SEND_AUTHINFO_VALID"        },
+	{ SCTP_SENDV_SNDINFO,               "SCTP_SENDV_SNDINFO"              },
+	{ SCTP_SENDV_PRINFO,                "SCTP_SENDV_PRINFO"               },
+	{ SCTP_SENDV_AUTHINFO,              "SCTP_SENDV_AUTHINFO"             },
+	{ SCTP_SENDV_SPA,                   "SCTP_SENDV_SPA"                  },
+	{ SCTP_ASSOC_CHANGE,                "SCTP_ASSOC_CHANGE"               },
+	{ SCTP_PEER_ADDR_CHANGE,            "SCTP_PEER_ADDR_CHANGE"           },
+	{ SCTP_REMOTE_ERROR,                "SCTP_REMOTE_ERROR"               },
+	{ SCTP_SEND_FAILED,                 "SCTP_SEND_FAILED"                },
+	{ SCTP_SHUTDOWN_EVENT,              "SCTP_SHUTDOWN_EVENT"             },
+	{ SCTP_ADAPTATION_INDICATION,       "SCTP_ADAPTATION_INDICATION"      },
+	{ SCTP_PARTIAL_DELIVERY_EVENT,      "SCTP_PARTIAL_DELIVERY_EVENT"     },
+	{ SCTP_AUTHENTICATION_EVENT,        "SCTP_AUTHENTICATION_EVENT"       },
+	{ SCTP_SENDER_DRY_EVENT,            "SCTP_SENDER_DRY_EVENT"           },
+	{ SCTP_NOTIFICATIONS_STOPPED_EVENT, "SCTP_NOTIFICATIONS_STOPPED_EVENT"},
+	{ SCTP_SEND_FAILED_EVENT,           "SCTP_SEND_FAILED_EVENT"          },
+	{ SCTP_COMM_UP,                     "SCTP_COMM_UP"                    },
+	{ SCTP_COMM_LOST,                   "SCTP_COMM_LOST"                  },
+	{ SCTP_RESTART,                     "SCTP_RESTART"                    },
+	{ SCTP_SHUTDOWN_COMP,               "SCTP_SHUTDOWN_COMP"              },
+	{ SCTP_CANT_STR_ASSOC,              "SCTP_CANT_STR_ASSOC"             },
+	{ SCTP_PRSCTP_CAPABLE,              "SCTP_PRSCTP_CAPABLE"             },
+	{ SCTP_ADDR_AVAILABLE,              "SCTP_ADDR_AVAILABLE"             },
+	{ SCTP_ADDR_UNREACHABLE,            "SCTP_ADDR_UNREACHABLE"           },
+	{ SCTP_ADDR_REMOVED,                "SCTP_ADDR_REMOVED"               },
+	{ SCTP_ADDR_ADDED,                  "SCTP_ADDR_MADE_PRIM"             },
+	{ SCTP_DATA_UNSENT,                 "SCTP_DATA_UNSENT"                },
+	{ SCTP_DATA_SENT,                   "SCTP_DATA_SENT"                  },
+	{ SCTP_INACTIVE,                    "SCTP_INACTIVE"                   },
+	{ SCTP_ACTIVE,                      "SCTP_ACTIVE"                     },
+	{ SCTP_UNCONFIRMED,                 "SCTP_UNCONFIRMED"                },
+	{ SPP_HB_ENABLE,                    "SPP_HB_ENABLE"                   },
+	{ SPP_HB_DISABLE,                   "SPP_HB_DISABLE"                  },
+	{ SPP_HB_DEMAND,                    "SPP_HB_DEMAND"                   },
+	{ SPP_HB_TIME_IS_ZERO,              "SPP_HB_TIME_IS_ZERO"             },
+	{ SPP_PMTUD_ENABLE,                 "SPP_PMTUD_ENABLE"                },
+	{ SPP_PMTUD_DISABLE,                "SPP_PMTUD_DISABLE"               },
+	{ SPP_IPV6_FLOWLABEL,               "SPP_IPV6_FLOWLABEL"              },
+	{ SPP_IPV4_TOS,                     "SPP_IPV4_TOS"                    },
+	{ SCTP_CLOSED,                      "SCTP_CLOSED"                     },
+	{ SCTP_BOUND,                       "SCTP_BOUND"                      },
+	{ SCTP_LISTEN,                      "SCTP_LISTEN"                     },
+	{ SCTP_COOKIE_WAIT,                 "SCTP_COOKIE_WAIT"                },
+	{ SCTP_COOKIE_ECHOED,               "SCTP_COOKIE_ECHOED"              },
+	{ SCTP_ESTABLISHED,                 "SCTP_ESTABLISHED"                },
+	{ SCTP_SHUTDOWN_PENDING,            "SCTP_SHUTDOWN_PENDING"           },
+	{ SCTP_SHUTDOWN_SENT,               "SCTP_SHUTDOWN_SENT"              },
+	{ SCTP_SHUTDOWN_RECEIVED,           "SCTP_SHUTDOWN_RECEIVED"          },
+	{ SCTP_SHUTDOWN_ACK_SENT,           "SCTP_SHUTDOWN_ACK_SENT"          },
+
+	/* /usr/include/netinet/tcp.h */
+	{ TCP_NODELAY,                      "TCP_NODELAY"                     },
+	{ TCP_MAXSEG,                       "TCP_MAXSEG"                      },
+	{ TCP_KEEPALIVE,                    "TCP_KEEPALIVE"                   },
+	{ TCP_NOTIFY_THRESHOLD,             "TCP_NOTIFY_THRESHOLD"            },
+	{ TCP_ABORT_THRESHOLD,              "TCP_ABORT_THRESHOLD"             },
+	{ TCP_CONN_NOTIFY_THRESHOLD,        "TCP_CONN_NOTIFY_THRESHOLD"       },
+	{ TCP_CONN_ABORT_THRESHOLD,         "TCP_CONN_ABORT_THRESHOLD"        },
+	{ TCP_RECVDSTADDR,                  "TCP_RECVDSTADDR"                 },
+	{ TCP_INIT_CWND,                    "TCP_INIT_CWND"                   },
+	{ TCP_KEEPALIVE_THRESHOLD,          "TCP_KEEPALIVE_THRESHOLD"         },
+	{ TCP_KEEPALIVE_ABORT_THRESHOLD,    "TCP_KEEPALIVE_ABORT_THRESHOLD"   },
+	{ TCP_CORK,                         "TCP_CORK"                        },
+	{ TCP_RTO_INITIAL,                  "TCP_RTO_INITIAL"                 },
+	{ TCP_RTO_MIN,                      "TCP_RTO_MIN"                     },
+	{ TCP_RTO_MAX,                      "TCP_RTO_MAX"                     },
+	{ TCP_LINGER2,                      "TCP_LINGER2"                     },
+	{ TCP_KEEPIDLE,                     "TCP_KEEPIDLE"                    },
+	{ TCP_KEEPINTVL,                    "TCP_KEEPINTVL"                   },
+	{ TCP_KEEPCNT,                      "TCP_KEEPCNT"                     },
+	{ TCP_INFO,                         "TCP_INFO"                        },
+	{ TCP_CONGESTION,                   "TCP_CONGESTION"                  },
+	{ TCP_MD5SIG,                       "TCP_MD5SIG"                      },
+
+	/* /usr/include/sys/fcntl.h */
+	{ O_RDONLY,                         "O_RDONLY"                        },
+	{ O_WRONLY,                         "O_WRONLY"                        },
+	{ O_RDWR,                           "O_RDWR"                          },
+	{ O_SEARCH,                         "O_SEARCH"                        },
+	{ O_EXEC,                           "O_EXEC"                          },
+	{ O_NDELAY,                         "O_NDELAY"                        },
+	{ O_APPEND,                         "O_APPEND"                        },
+	{ O_SYNC,                           "O_SYNC"                          },
+	{ O_DSYNC,                          "O_DSYNC"                         },
+	{ O_RSYNC,                          "O_RSYNC"                         },
+	{ O_NONBLOCK,                       "O_NONBLOCK"                      },
+	{ O_LARGEFILE,                      "O_LARGEFILE"                     },
+	{ O_CREAT,                          "O_CREAT"                         },
+	{ O_TRUNC,                          "O_TRUNC"                         },
+	{ O_EXCL,                           "O_EXCL"                          },
+	{ O_NOCTTY,                         "O_NOCTTY"                        },
+	{ O_XATTR,                          "O_XATTR"                         },
+	{ O_NOFOLLOW,                       "O_NOFOLLOW"                      },
+	{ O_NOLINKS,                        "O_NOLINKS"                       },
+	{ O_CLOEXEC,                        "O_CLOEXEC"                       },
+	{ O_DIRECTORY,                      "O_DIRECTORY"                     },
+	{ O_TTY_INIT,                       "O_TTY_INIT"                      },
+	{ O_TPDSAFE,                        "O_TPDSAFE"                       },
+	{ O_XPG4OPEN,                       "O_XPG4OPEN"                      },
+	{ O_CLOFORK,                        "O_CLOFORK"                       },
+	{ O_NOSIGPIPE,                      "O_NOSIGPIPE"                     },
+	{ F_DUPFD,                          "F_DUPFD"                         },
+	{ F_DUPFD_CLOEXEC,                  "F_DUPFD_CLOEXEC"                 },
+	{ F_DUPFD_CLOFORK,                  "F_DUPFD_CLOFORK"                 },
+	{ F_GETFD,                          "F_GETFD"                         },
+	{ F_SETFD,                          "F_SETFD"                         },
+	{ F_GETFL,                          "F_GETFL"                         },
+	{ F_GETXFL,                         "F_GETXFL"                        },
+	{ F_SETFL,                          "F_SETFL"                         },
+	{ F_CHKFL,                          "F_CHKFL"                         },
+	{ F_DUP2FD,                         "F_DUP2FD"                        },
+	{ F_DUP2FD_CLOEXEC,                 "F_DUP2FD_CLOEXEC"                },
+	{ F_DUP2FD_CLOFORK,                 "F_DUP2FD_CLOFORK"                },
+	{ F_ISSTREAM,                       "F_ISSTREAM"                      },
+	{ F_PRIV,                           "F_PRIV"                          },
+	{ F_NPRIV,                          "F_NPRIV"                         },
+	{ F_QUOTACTL,                       "F_QUOTACTL"                      },
+	{ F_BLOCKS,                         "F_BLOCKS"                        },
+	{ F_BLKSIZE,                        "F_BLKSIZE"                       },
+	{ F_GETOWN,                         "F_GETOWN"                        },
+	{ F_SETOWN,                         "F_SETOWN"                        },
+	{ F_REVOKE,                         "F_REVOKE"                        },
+	{ F_HASREMOTELOCKS,                 "F_HASREMOTELOCKS"                },
+	{ F_SETLK,                          "F_SETLK"                         },
+	{ F_SETLKW,                         "F_SETLKW"                        },
+	{ F_ALLOCSP,                        "F_ALLOCSP"                       },
+	{ F_FREESP,                         "F_FREESP"                        },
+	{ F_GETLK,                          "F_GETLK"                         },
+	{ F_SETLK_NBMAND,                   "F_SETLK_NBMAND"                  },
+	{ F_SETLK64,                        "F_SETLK64"                       },
+	{ F_SETLKW64,                       "F_SETLKW64"                      },
+	{ F_ALLOCSP64,                      "F_ALLOCSP64"                     },
+	{ F_FREESP64,                       "F_FREESP64"                      },
+	{ F_GETLK64,                        "F_GETLK64"                       },
+	{ F_SETLK64_NBMAND,                 "F_SETLK64_NBMAND"                },
+	{ F_SHARE,                          "F_SHARE"                         },
+	{ F_UNSHARE,                        "F_UNSHARE"                       },
+	{ F_SHARE_NBMAND,                   "F_SHARE_NBMAND"                  },
+	{ F_BADFD,                          "F_BADFD"                         },
+	{ F_SETTPD,                         "F_SETTPD"                        },
+	{ F_GETTPD,                         "F_GETTPD"                        },
+	{ F_DUP3FD,                         "F_DUP3FD"                        },
+	{ F_CLOSEFROM,                      "F_CLOSEFROM"                     },
+	{ O_ACCMODE,                        "O_ACCMODE"                       },
+	{ FD_CLOEXEC,                       "FD_CLOEXEC"                      },
+	{ FD_CLOFORK,                       "FD_CLOFORK"                      },
+	{ DIRECTIO_OFF,                     "DIRECTIO_OFF"                    },
+	{ DIRECTIO_ON,                      "DIRECTIO_ON"                     },
+	{ F_RDACC,                          "F_RDACC"                         },
+	{ F_WRACC,                          "F_WRACC"                         },
+	{ F_RWACC,                          "F_RWACC"                         },
+	{ F_RMACC,                          "F_RMACC"                         },
+	{ F_MDACC,                          "F_MDACC"                         },
+	{ F_NODNY,                          "F_NODNY"                         },
+	{ F_RDDNY,                          "F_RDDNY"                         },
+	{ F_WRDNY,                          "F_WRDNY"                         },
+	{ F_RWDNY,                          "F_RWDNY"                         },
+	{ F_RMDNY,                          "F_RMDNY"                         },
+	{ F_COMPAT,                         "F_COMPAT"                        },
+	{ F_MANDDNY,                        "F_MANDDNY"                       },
+	{ AT_FDCWD,                         "AT_FDCWD"                        },
+	{ AT_SYMLINK_NOFOLLOW,              "AT_SYMLINK_NOFOLLOW"             },
+	{ AT_SYMLINK_FOLLOW,                "AT_SYMLINK_FOLLOW"               },
+	{ AT_REMOVEDIR,                     "AT_REMOVEDIR"                    },
+	{ _AT_TRIGGER,                      "_AT_TRIGGER"                     },
+	{ AT_EACCESS,                       "AT_EACCESS"                      },
+	{ POSIX_FADV_NORMAL,                "POSIX_FADV_NORMAL"               },
+	{ POSIX_FADV_RANDOM,                "POSIX_FADV_RANDOM"               },
+	{ POSIX_FADV_SEQUENTIAL,            "POSIX_FADV_SEQUENTIAL"           },
+	{ POSIX_FADV_WILLNEED,              "POSIX_FADV_WILLNEED"             },
+	{ POSIX_FADV_DONTNEED,              "POSIX_FADV_DONTNEED"             },
+	{ POSIX_FADV_NOREUSE,               "POSIX_FADV_NOREUSE"              },
+
+	/* /usr/include/sys/socket.h */
+	{ MSG_OOB,                          "MSG_OOB"                         },
+	{ MSG_PEEK,                         "MSG_PEEK"                        },
+	{ MSG_DONTROUTE,                    "MSG_DONTROUTE"                   },
+	{ MSG_EOR,                          "MSG_EOR"                         },
+	{ MSG_TRUNC,                        "MSG_TRUNC"                       },
+	{ MSG_CTRUNC,                       "MSG_CTRUNC"                      },
+	{ MSG_WAITALL,                      "MSG_WAITALL"                     },
+	{ MSG_DUPCTRL,                      "MSG_DUPCTRL"                     },
+	{ MSG_DONTWAIT,                     "MSG_DONTWAIT"                    },
+	{ MSG_NOTIFICATION,                 "MSG_NOTIFICATION"                },
+	{ MSG_NOSIGNAL,                     "MSG_NOSIGNAL"                    },
+	{ MSG_WAITFORONE,                   "MSG_WAITFORONE"                  },
+	{ MSG_XPG4_2,                       "MSG_XPG4_2"                      },
+
+	/* /usr/include/sys/filio.h */
+	{ FIOCLEX,                          "FIOCLEX"                         },
+	{ FIONCLEX,                         "FIONCLEX"                        },
+	{ FIONREAD,                         "FIONREAD"                        },
+	{ FIONBIO,                          "FIONBIO"                         },
+	{ FIOASYNC,                         "FIOASYNC"                        },
+	{ FIOSETOWN,                        "FIOSETOWN"                       },
+	{ FIOGETOWN,                        "FIOGETOWN"                       },
+
+	/* /usr/include/sys/poll.h */
+	{ POLLIN,                           "POLLIN"                          },
+	{ POLLPRI,                          "POLLPRI"                         },
+	{ POLLOUT,                          "POLLOUT"                         },
+	{ POLLRDNORM,                       "POLLRDNORM"                      },
+	{ POLLWRNORM,                       "POLLWRNORM"                      },
+	{ POLLRDBAND,                       "POLLRDBAND"                      },
+	{ POLLWRBAND,                       "POLLWRBAND"                      },
+	{ POLLERR,                          "POLLERR"                         },
+	{ POLLHUP,                          "POLLHUP"                         },
+	{ POLLNVAL,                         "POLLNVAL"                        },
+	{ POLLREMOVE,                       "POLLREMOVE"                      },
+
+	/* /usr/include/sys/errno.h */
+	{ EPERM,                            "EPERM"                           },
+	{ ENOENT,                           "ENOENT"                          },
+	{ ESRCH,                            "ESRCH"                           },
+	{ EINTR,                            "EINTR"                           },
+	{ EIO,                              "EIO"                             },
+	{ ENXIO,                            "ENXIO"                           },
+	{ E2BIG,                            "E2BIG"                           },
+	{ ENOEXEC,                          "ENOEXEC"                         },
+	{ EBADF,                            "EBADF"                           },
+	{ ECHILD,                           "ECHILD"                          },
+	{ EAGAIN,                           "EAGAIN"                          },
+	{ ENOMEM,                           "ENOMEM"                          },
+	{ EACCES,                           "EACCES"                          },
+	{ EFAULT,                           "EFAULT"                          },
+	{ ENOTBLK,                          "ENOTBLK"                         },
+	{ EBUSY,                            "EBUSY"                           },
+	{ EEXIST,                           "EEXIST"                          },
+	{ EXDEV,                            "EXDEV"                           },
+	{ ENODEV,                           "ENODEV"                          },
+	{ ENOTDIR,                          "ENOTDIR"                         },
+	{ EISDIR,                           "EISDIR"                          },
+	{ EINVAL,                           "EINVAL"                          },
+	{ ENFILE,                           "ENFILE"                          },
+	{ EMFILE,                           "EMFILE"                          },
+	{ ENOTTY,                           "ENOTTY"                          },
+	{ ETXTBSY,                          "ETXTBSY"                         },
+	{ EFBIG,                            "EFBIG"                           },
+	{ ENOSPC,                           "ENOSPC"                          },
+	{ ESPIPE,                           "ESPIPE"                          },
+	{ EROFS,                            "EROFS"                           },
+	{ EMLINK,                           "EMLINK"                          },
+	{ EPIPE,                            "EPIPE"                           },
+	{ EDOM,                             "EDOM"                            },
+	{ ERANGE,                           "ERANGE"                          },
+	{ ENOMSG,                           "ENOMSG"                          },
+	{ EIDRM,                            "EIDRM"                           },
+	{ ECHRNG,                           "ECHRNG"                          },
+	{ EL2NSYNC,                         "EL2NSYNC"                        },
+	{ EL3HLT,                           "EL3HLT"                          },
+	{ EL3RST,                           "EL3RST"                          },
+	{ ELNRNG,                           "ELNRNG"                          },
+	{ EUNATCH,                          "EUNATCH"                         },
+	{ ENOCSI,                           "ENOCSI"                          },
+	{ EL2HLT,                           "EL2HLT"                          },
+	{ EDEADLK,                          "EDEADLK"                         },
+	{ ENOLCK,                           "ENOLCK"                          },
+	{ ECANCELED,                        "ECANCELED"                       },
+	{ ENOTSUP,                          "ENOTSUP"                         },
+	{ EDQUOT,                           "EDQUOT"                          },
+	{ EBADE,                            "EBADE"                           },
+	{ EBADR,                            "EBADR"                           },
+	{ EXFULL,                           "EXFULL"                          },
+	{ ENOANO,                           "ENOANO"                          },
+	{ EBADRQC,                          "EBADRQC"                         },
+	{ EBADSLT,                          "EBADSLT"                         },
+	{ EDEADLOCK,                        "EDEADLOCK"                       },
+	{ EBFONT,                           "EBFONT"                          },
+	{ EOWNERDEAD,                       "EOWNERDEAD"                      },
+	{ ENOTRECOVERABLE,                  "ENOTRECOVERABLE"                 },
+	{ ENOSTR,                           "ENOSTR"                          },
+	{ ENODATA,                          "ENODATA"                         },
+	{ ETIME,                            "ETIME"                           },
+	{ ENOSR,                            "ENOSR"                           },
+	{ ENONET,                           "ENONET"                          },
+	{ ENOPKG,                           "ENOPKG"                          },
+	{ EREMOTE,                          "EREMOTE"                         },
+	{ ENOLINK,                          "ENOLINK"                         },
+	{ EADV,                             "EADV"                            },
+	{ ESRMNT,                           "ESRMNT"                          },
+	{ ECOMM,                            "ECOMM"                           },
+	{ EPROTO,                           "EPROTO"                          },
+	{ ELOCKUNMAPPED,                    "ELOCKUNMAPPED"                   },
+	{ ENOTACTIVE,                       "ENOTACTIVE"                      },
+	{ EMULTIHOP,                        "EMULTIHOP"                       },
+	{ EADI,                             "EADI"                            },
+	{ EBADMSG,                          "EBADMSG"                         },
+	{ ENAMETOOLONG,                     "ENAMETOOLONG"                    },
+	{ EOVERFLOW,                        "EOVERFLOW"                       },
+	{ ENOTUNIQ,                         "ENOTUNIQ"                        },
+	{ EBADFD,                           "EBADFD"                          },
+	{ EREMCHG,                          "EREMCHG"                         },
+	{ ELIBACC,                          "ELIBACC"                         },
+	{ ELIBBAD,                          "ELIBBAD"                         },
+	{ ELIBSCN,                          "ELIBSCN"                         },
+	{ ELIBMAX,                          "ELIBMAX"                         },
+	{ ELIBEXEC,                         "ELIBEXEC"                        },
+	{ EILSEQ,                           "EILSEQ"                          },
+	{ ENOSYS,                           "ENOSYS"                          },
+	{ ELOOP,                            "ELOOP"                           },
+	{ ERESTART,                         "ERESTART"                        },
+	{ ESTRPIPE,                         "ESTRPIPE"                        },
+	{ ENOTEMPTY,                        "ENOTEMPTY"                       },
+	{ EUSERS,                           "EUSERS"                          },
+	{ ENOTSOCK,                         "ENOTSOCK"                        },
+	{ EDESTADDRREQ,                     "EDESTADDRREQ"                    },
+	{ EMSGSIZE,                         "EMSGSIZE"                        },
+	{ EPROTOTYPE,                       "EPROTOTYPE"                      },
+	{ ENOPROTOOPT,                      "ENOPROTOOPT"                     },
+	{ EPROTONOSUPPORT,                  "EPROTONOSUPPORT"                 },
+	{ ESOCKTNOSUPPORT,                  "ESOCKTNOSUPPORT"                 },
+	{ EOPNOTSUPP,                       "EOPNOTSUPP"                      },
+	{ EPFNOSUPPORT,                     "EPFNOSUPPORT"                    },
+	{ EAFNOSUPPORT,                     "EAFNOSUPPORT"                    },
+	{ EADDRINUSE,                       "EADDRINUSE"                      },
+	{ EADDRNOTAVAIL,                    "EADDRNOTAVAIL"                   },
+	{ ENETDOWN,                         "ENETDOWN"                        },
+	{ ENETUNREACH,                      "ENETUNREACH"                     },
+	{ ENETRESET,                        "ENETRESET"                       },
+	{ ECONNABORTED,                     "ECONNABORTED"                    },
+	{ ECONNRESET,                       "ECONNRESET"                      },
+	{ ENOBUFS,                          "ENOBUFS"                         },
+	{ EISCONN,                          "EISCONN"                         },
+	{ ENOTCONN,                         "ENOTCONN"                        },
+	{ ESHUTDOWN,                        "ESHUTDOWN"                       },
+	{ ETOOMANYREFS,                     "ETOOMANYREFS"                    },
+	{ ETIMEDOUT,                        "ETIMEDOUT"                       },
+	{ ECONNREFUSED,                     "ECONNREFUSED"                    },
+	{ EHOSTDOWN,                        "EHOSTDOWN"                       },
+	{ EHOSTUNREACH,                     "EHOSTUNREACH"                    },
+	{ EWOULDBLOCK,                      "EWOULDBLOCK"                     },
+	{ EALREADY,                         "EALREADY"                        },
+	{ EINPROGRESS,                      "EINPROGRESS"                     },
+	{ ESTALE,                           "ESTALE"                          },
+
+	/* Sentinel marking the end of the table. */
+	{ 0, NULL }
+};
+
+struct int_symbol *platform_symbols(void)
+{
+	return platform_symbols_table;
+}
+
+#endif  /* __SunOS_5_11 */
-- 
GitLab