/* Generated by ./xlat/gen.sh from ./xlat/socketlayers.in; do not edit. */
#if !(defined(SOL_IP) || (defined(HAVE_DECL_SOL_IP) && HAVE_DECL_SOL_IP))
# define SOL_IP 0
#endif
#if !(defined(SOL_SOCKET) || (defined(HAVE_DECL_SOL_SOCKET) && HAVE_DECL_SOL_SOCKET))
# define SOL_SOCKET 1
#endif
#if !(defined(SOL_TCP) || (defined(HAVE_DECL_SOL_TCP) && HAVE_DECL_SOL_TCP))
# define SOL_TCP 6
#endif
#if !(defined(SOL_UDP) || (defined(HAVE_DECL_SOL_UDP) && HAVE_DECL_SOL_UDP))
# define SOL_UDP 17
#endif
#if !(defined(SOL_IPV6) || (defined(HAVE_DECL_SOL_IPV6) && HAVE_DECL_SOL_IPV6))
# define SOL_IPV6 41
#endif
#if !(defined(SOL_ICMPV6) || (defined(HAVE_DECL_SOL_ICMPV6) && HAVE_DECL_SOL_ICMPV6))
# define SOL_ICMPV6 58
#endif
#if !(defined(SOL_SCTP) || (defined(HAVE_DECL_SOL_SCTP) && HAVE_DECL_SOL_SCTP))
# define SOL_SCTP 132
#endif
#if !(defined(SOL_UDPLITE) || (defined(HAVE_DECL_SOL_UDPLITE) && HAVE_DECL_SOL_UDPLITE))
# define SOL_UDPLITE 136
#endif
#if !(defined(SOL_RAW) || (defined(HAVE_DECL_SOL_RAW) && HAVE_DECL_SOL_RAW))
# define SOL_RAW 255
#endif
#if !(defined(SOL_IPX) || (defined(HAVE_DECL_SOL_IPX) && HAVE_DECL_SOL_IPX))
# define SOL_IPX 256
#endif
#if !(defined(SOL_AX25) || (defined(HAVE_DECL_SOL_AX25) && HAVE_DECL_SOL_AX25))
# define SOL_AX25 257
#endif
#if !(defined(SOL_ATALK) || (defined(HAVE_DECL_SOL_ATALK) && HAVE_DECL_SOL_ATALK))
# define SOL_ATALK 258
#endif
#if !(defined(SOL_NETROM) || (defined(HAVE_DECL_SOL_NETROM) && HAVE_DECL_SOL_NETROM))
# define SOL_NETROM 259
#endif
#if !(defined(SOL_ROSE) || (defined(HAVE_DECL_SOL_ROSE) && HAVE_DECL_SOL_ROSE))
# define SOL_ROSE 260
#endif
#if !(defined(SOL_DECNET) || (defined(HAVE_DECL_SOL_DECNET) && HAVE_DECL_SOL_DECNET))
# define SOL_DECNET 261
#endif
#if !(defined(SOL_X25) || (defined(HAVE_DECL_SOL_X25) && HAVE_DECL_SOL_X25))
# define SOL_X25 262
#endif
#if !(defined(SOL_PACKET) || (defined(HAVE_DECL_SOL_PACKET) && HAVE_DECL_SOL_PACKET))
# define SOL_PACKET 263
#endif
#if !(defined(SOL_ATM) || (defined(HAVE_DECL_SOL_ATM) && HAVE_DECL_SOL_ATM))
# define SOL_ATM 264
#endif
#if !(defined(SOL_AAL) || (defined(HAVE_DECL_SOL_AAL) && HAVE_DECL_SOL_AAL))
# define SOL_AAL 265
#endif
#if !(defined(SOL_IRDA) || (defined(HAVE_DECL_SOL_IRDA) && HAVE_DECL_SOL_IRDA))
# define SOL_IRDA 266
#endif
#if !(defined(SOL_NETBEUI) || (defined(HAVE_DECL_SOL_NETBEUI) && HAVE_DECL_SOL_NETBEUI))
# define SOL_NETBEUI 267
#endif
#if !(defined(SOL_LLC) || (defined(HAVE_DECL_SOL_LLC) && HAVE_DECL_SOL_LLC))
# define SOL_LLC 268
#endif
#if !(defined(SOL_DCCP) || (defined(HAVE_DECL_SOL_DCCP) && HAVE_DECL_SOL_DCCP))
# define SOL_DCCP 269
#endif
#if !(defined(SOL_NETLINK) || (defined(HAVE_DECL_SOL_NETLINK) && HAVE_DECL_SOL_NETLINK))
# define SOL_NETLINK 270
#endif
#if !(defined(SOL_TIPC) || (defined(HAVE_DECL_SOL_TIPC) && HAVE_DECL_SOL_TIPC))
# define SOL_TIPC 271
#endif
#if !(defined(SOL_RXRPC) || (defined(HAVE_DECL_SOL_RXRPC) && HAVE_DECL_SOL_RXRPC))
# define SOL_RXRPC 272
#endif
#if !(defined(SOL_PPPOL2TP) || (defined(HAVE_DECL_SOL_PPPOL2TP) && HAVE_DECL_SOL_PPPOL2TP))
# define SOL_PPPOL2TP 273
#endif
#if !(defined(SOL_BLUETOOTH) || (defined(HAVE_DECL_SOL_BLUETOOTH) && HAVE_DECL_SOL_BLUETOOTH))
# define SOL_BLUETOOTH 274
#endif
#if !(defined(SOL_PNPIPE) || (defined(HAVE_DECL_SOL_PNPIPE) && HAVE_DECL_SOL_PNPIPE))
# define SOL_PNPIPE 275
#endif
#if !(defined(SOL_RDS) || (defined(HAVE_DECL_SOL_RDS) && HAVE_DECL_SOL_RDS))
# define SOL_RDS 276
#endif
#if !(defined(SOL_IUCV) || (defined(HAVE_DECL_SOL_IUCV) && HAVE_DECL_SOL_IUCV))
# define SOL_IUCV 277
#endif
#if !(defined(SOL_CAIF) || (defined(HAVE_DECL_SOL_CAIF) && HAVE_DECL_SOL_CAIF))
# define SOL_CAIF 278
#endif
#if !(defined(SOL_ALG) || (defined(HAVE_DECL_SOL_ALG) && HAVE_DECL_SOL_ALG))
# define SOL_ALG 279
#endif
#if !(defined(SOL_NFC) || (defined(HAVE_DECL_SOL_NFC) && HAVE_DECL_SOL_NFC))
# define SOL_NFC 280
#endif
#if !(defined(SOL_KCM) || (defined(HAVE_DECL_SOL_KCM) && HAVE_DECL_SOL_KCM))
# define SOL_KCM 281
#endif
#if !(defined(SOL_TLS) || (defined(HAVE_DECL_SOL_TLS) && HAVE_DECL_SOL_TLS))
# define SOL_TLS 282
#endif

#ifndef IN_MPERS

const struct xlat socketlayers[] = {
 XLAT(SOL_IP),
 XLAT(SOL_SOCKET),
 XLAT(SOL_TCP),
 XLAT(SOL_UDP),
 XLAT(SOL_IPV6),
 XLAT(SOL_ICMPV6),
 XLAT(SOL_SCTP),
 XLAT(SOL_UDPLITE),
 XLAT(SOL_RAW),
 XLAT(SOL_IPX),
 XLAT(SOL_AX25),
 XLAT(SOL_ATALK),
 XLAT(SOL_NETROM),
 XLAT(SOL_ROSE),
 XLAT(SOL_DECNET),
 XLAT(SOL_X25),
 XLAT(SOL_PACKET),
 XLAT(SOL_ATM),
 XLAT(SOL_AAL),
 XLAT(SOL_IRDA),
 XLAT(SOL_NETBEUI),
 XLAT(SOL_LLC),
 XLAT(SOL_DCCP),
 XLAT(SOL_NETLINK),
 XLAT(SOL_TIPC),
 XLAT(SOL_RXRPC),
 XLAT(SOL_PPPOL2TP),
 XLAT(SOL_BLUETOOTH),
 XLAT(SOL_PNPIPE),
 XLAT(SOL_RDS),
 XLAT(SOL_IUCV),
 XLAT(SOL_CAIF),
 XLAT(SOL_ALG),
 XLAT(SOL_NFC),
 XLAT(SOL_KCM),
 XLAT(SOL_TLS),
 XLAT_END
};

#endif /* !IN_MPERS */
