@@ -2007,10 +2007,44 @@ initsocket()
20072007 if (PyDict_SetItemString (d , "SocketType" ,
20082008 (PyObject * )& PySocketSock_Type ) != 0 )
20092009 return ;
2010+
2011+ /* Address families (we only support AF_INET and AF_UNIX) */
2012+ #ifdef AF_UNSPEC
2013+ insint (d , "AF_UNSPEC" , AF_UNSPEC );
2014+ #endif
20102015 insint (d , "AF_INET" , AF_INET );
20112016#ifdef AF_UNIX
20122017 insint (d , "AF_UNIX" , AF_UNIX );
20132018#endif /* AF_UNIX */
2019+ #ifdef AF_AX25
2020+ insint (d , "AF_AX25" , AF_AX25 ); /* Amateur Radio AX.25 */
2021+ #endif
2022+ #ifdef AF_IPX
2023+ insint (d , "AF_IPX" , AF_IPX ); /* Novell IPX */
2024+ #endif
2025+ #ifdef AF_APPLETALK
2026+ insint (d , "AF_APPLETALK" , AF_APPLETALK ); /* Appletalk DDP */
2027+ #endif
2028+ #ifdef AF_NETROM
2029+ insint (d , "AF_NETROM" , AF_NETROM ); /* Amateur radio NetROM */
2030+ #endif
2031+ #ifdef AF_BRIDGE
2032+ insint (d , "AF_BRIDGE" , AF_BRIDGE ); /* Multiprotocol bridge */
2033+ #endif
2034+ #ifdef AF_AAL5
2035+ insint (d , "AF_AAL5" , AF_AAL5 ); /* Reserved for Werner's ATM */
2036+ #endif
2037+ #ifdef AF_X25
2038+ insint (d , "AF_X25" , AF_X25 ); /* Reserved for X.25 project */
2039+ #endif
2040+ #ifdef AF_INET6
2041+ insint (d , "AF_INET6" , AF_INET6 ); /* IP version 6 */
2042+ #endif
2043+ #ifdef AF_ROSE
2044+ insint (d , "AF_ROSE" , AF_ROSE ); /* Amateur Radio X.25 PLP */
2045+ #endif
2046+
2047+ /* Socket types */
20142048 insint (d , "SOCK_STREAM" , SOCK_STREAM );
20152049 insint (d , "SOCK_DGRAM" , SOCK_DGRAM );
20162050#ifndef __BEOS__
@@ -2050,7 +2084,6 @@ initsocket()
20502084#ifdef SO_REUSEPORT
20512085 insint (d , "SO_REUSEPORT" , SO_REUSEPORT );
20522086#endif
2053-
20542087#ifdef SO_SNDBUF
20552088 insint (d , "SO_SNDBUF" , SO_SNDBUF );
20562089#endif
@@ -2113,10 +2146,39 @@ initsocket()
21132146#endif
21142147
21152148 /* Protocol level and numbers, usable for [gs]etsockopt */
2116- /* Sigh -- some systems (e.g. Linux) use enums for these. */
21172149#ifdef SOL_SOCKET
21182150 insint (d , "SOL_SOCKET" , SOL_SOCKET );
21192151#endif
2152+ #ifdef SOL_IP
2153+ insint (d , "SOL_IP" , SOL_IP );
2154+ #else
2155+ insint (d , "SOL_IP" , 0 );
2156+ #endif
2157+ #ifdef SOL_IPX
2158+ insint (d , "SOL_IPX" , SOL_IPX );
2159+ #endif
2160+ #ifdef SOL_AX25
2161+ insint (d , "SOL_AX25" , SOL_AX25 );
2162+ #endif
2163+ #ifdef SOL_ATALK
2164+ insint (d , "SOL_ATALK" , SOL_ATALK );
2165+ #endif
2166+ #ifdef SOL_NETROM
2167+ insint (d , "SOL_NETROM" , SOL_NETROM );
2168+ #endif
2169+ #ifdef SOL_ROSE
2170+ insint (d , "SOL_ROSE" , SOL_ROSE );
2171+ #endif
2172+ #ifdef SOL_TCP
2173+ insint (d , "SOL_TCP" , SOL_TCP );
2174+ #else
2175+ insint (d , "SOL_TCP" , 6 );
2176+ #endif
2177+ #ifdef SOL_UDP
2178+ insint (d , "SOL_UDP" , SOL_UDP );
2179+ #else
2180+ insint (d , "SOL_UDP" , 17 );
2181+ #endif
21202182#ifdef IPPROTO_IP
21212183 insint (d , "IPPROTO_IP" , IPPROTO_IP );
21222184#else
@@ -2269,6 +2331,28 @@ initsocket()
22692331#ifdef IP_DROP_MEMBERSHIP
22702332 insint (d , "IP_DROP_MEMBERSHIP" , IP_DROP_MEMBERSHIP );
22712333#endif
2334+ #ifdef IP_DEFAULT_MULTICAST_TTL
2335+ insint (d , "IP_DEFAULT_MULTICAST_TTL" , IP_DEFAULT_MULTICAST_TTL );
2336+ #endif
2337+ #ifdef IP_DEFAULT_MULTICAST_LOOP
2338+ insint (d , "IP_DEFAULT_MULTICAST_LOOP" , IP_DEFAULT_MULTICAST_LOOP );
2339+ #endif
2340+ #ifdef IP_MAX_MEMBERSHIPS
2341+ insint (d , "IP_MAX_MEMBERSHIPS" , IP_MAX_MEMBERSHIPS );
2342+ #endif
2343+
2344+ /* TCP options */
2345+ #ifdef TCP_NODELAY
2346+ insint (d , "TCP_NODELAY" , TCP_NODELAY );
2347+ #endif
2348+ #ifdef TCP_MAXSEG
2349+ insint (d , "TCP_MAXSEG" , TCP_MAXSEG );
2350+ #endif
2351+
2352+ /* IPX options */
2353+ #ifdef IPX_TYPE
2354+ insint (d , "IPX_TYPE" , IPX_TYPE );
2355+ #endif
22722356
22732357 /* Initialize gethostbyname lock */
22742358#ifdef USE_GETHOSTBYNAME_LOCK
0 commit comments