Changeset 7022 for trunk/src/wsock32/wsock32.cpp
- Timestamp:
- Oct 11, 2001, 9:24:07 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wsock32/wsock32.cpp
r6996 r7022 1 /* $Id: wsock32.cpp,v 1.4 0 2001-10-10 20:59:23 phallerExp $ */1 /* $Id: wsock32.cpp,v 1.41 2001-10-11 19:24:07 sandervl Exp $ */ 2 2 3 3 /* … … 750 750 return SOCKET_ERROR; 751 751 } 752 //testestest 753 #ifdef DEBUG 754 dprintf(("sending to %s", inet_ntoa(((sockaddr_in*)to)->sin_addr))); 755 for(int i=0;i<len;i++) { 756 dprintf(("%02x: %x", i, buf[i])); 757 } 758 #endif 752 759 ret = sendto(s, (char *)buf, len, flags, (struct sockaddr *)to, tolen); 753 760 … … 1021 1028 } 1022 1029 //TODO convert common interface names! 1023 ret = setsockopt(s, level, optname, (char *)optval, optlen);1030 ret = setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF_OS2, (char *)optval, optlen); 1024 1031 break; 1025 1032 } 1026 1033 1027 1034 case IP_ADD_MEMBERSHIP: 1035 case WS2_IPPROTO_OPT(IP_ADD_MEMBERSHIP_WS2): 1036 if (optlen < sizeof(struct ip_mreq)) 1037 { 1038 dprintf(("IPPROTO_IP, IP_ADD_MEMBERSHIP, optlen too small")); 1039 WSASetLastError(WSAEFAULT); 1040 return SOCKET_ERROR; 1041 } 1042 ret = setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP_OS2, (char *)optval, optlen); 1043 break; 1044 1028 1045 case IP_DROP_MEMBERSHIP: 1029 case WS2_IPPROTO_OPT(IP_ADD_MEMBERSHIP_WS2):1030 1046 case WS2_IPPROTO_OPT(IP_DROP_MEMBERSHIP_WS2): 1031 1047 if (optlen < sizeof(struct ip_mreq)) 1032 1048 { 1033 dprintf(("IPPROTO_IP, IP_ ADD_MEMBERSHIP/IP_DROP_MEMBERSHIP, optlen too small"));1049 dprintf(("IPPROTO_IP, IP_DROP_MEMBERSHIP, optlen too small")); 1034 1050 WSASetLastError(WSAEFAULT); 1035 1051 return SOCKET_ERROR; 1036 1052 } 1037 ret = setsockopt(s, level, optname, (char *)optval, optlen);1053 ret = setsockopt(s, IPPROTO_IP, IP_DROP_MEMBERSHIP_OS2, (char *)optval, optlen); 1038 1054 break; 1039 1055 … … 1049 1065 } 1050 1066 flLoop = (*optval == 0) ? 0 : 1; 1051 dprintf(("IP_MULTICAST_LOOP /IP_MULTICAST_TTL%d", *optval));1052 ret = setsockopt(s, level, optname, (char *)&flLoop, optlen);1067 dprintf(("IP_MULTICAST_LOOP %d", *optval)); 1068 ret = setsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP_OS2, (char *)&flLoop, optlen); 1053 1069 break; 1054 1070 } … … 1062 1078 return SOCKET_ERROR; 1063 1079 } 1064 ret = setsockopt(s, level, optname, (char *)optval, optlen); 1080 ret = setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL_OS2, (char *)optval, optlen); 1081 break; 1082 1083 case IP_TTL: 1084 case WS2_IPPROTO_OPT(IP_TTL_WS2): 1085 if (optlen < sizeof(u_int)) 1086 { 1087 dprintf(("IPPROTO_IP, IP_TTL_WS2, optlen too small")); 1088 WSASetLastError(WSAEFAULT); 1089 return SOCKET_ERROR; 1090 } 1091 dprintf(("IPPROTO_IP, IP_TTL 0x%x", *optval)); 1092 ret = setsockopt(s, IPPROTO_IP, IP_TTL_OS2, (char *)optval, optlen); 1093 break; 1094 1095 case IP_TOS: 1096 case WS2_IPPROTO_OPT(IP_TOS_WS2): 1097 if (optlen < sizeof(u_int)) 1098 { 1099 dprintf(("IPPROTO_IP, IP_TOS_WS2, optlen too small")); 1100 WSASetLastError(WSAEFAULT); 1101 return SOCKET_ERROR; 1102 } 1103 dprintf(("IPPROTO_IP, IP_TOS 0x%x", *optval)); 1104 ret = setsockopt(s, IPPROTO_IP, IP_TOS_OS2, (char *)optval, optlen); 1105 break; 1106 1107 case WS2_IPPROTO_OPT(IP_HDRINCL_WS2): 1108 if (optlen < sizeof(u_int)) 1109 { 1110 dprintf(("IPPROTO_IP, IP_HDRINCL_WS2, optlen too small")); 1111 WSASetLastError(WSAEFAULT); 1112 return SOCKET_ERROR; 1113 } 1114 dprintf(("IPPROTO_IP, IP_HDRINCL 0x%x", *optval)); 1115 ret = setsockopt(s, IPPROTO_IP, IP_HDRINCL_OS2, (char *)optval, optlen); 1065 1116 break; 1066 1117 … … 1170 1221 } 1171 1222 } 1223 else 1224 if(level == IPPROTO_IP) { 1225 switch (optname) 1226 { 1227 case IP_MULTICAST_IF: 1228 case WS2_IPPROTO_OPT(IP_MULTICAST_IF_WS2): 1229 { 1230 if (*optlen < sizeof(in_addr)) 1231 { 1232 dprintf(("IPPROTO_IP, IP_MULTICAST_IP, optlen too small")); 1233 WSASetLastError(WSAEFAULT); 1234 return SOCKET_ERROR; 1235 } 1236 //TODO convert common interface names! 1237 ret = getsockopt(s, IPPROTO_IP, IP_MULTICAST_IF_OS2, (char *)optval, optlen); 1238 break; 1239 } 1240 1241 case IP_ADD_MEMBERSHIP: 1242 case WS2_IPPROTO_OPT(IP_ADD_MEMBERSHIP_WS2): 1243 if (*optlen < sizeof(struct ip_mreq)) 1244 { 1245 dprintf(("IPPROTO_IP, IP_ADD_MEMBERSHIP, optlen too small")); 1246 WSASetLastError(WSAEFAULT); 1247 return SOCKET_ERROR; 1248 } 1249 ret = getsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP_OS2, (char *)optval, optlen); 1250 break; 1251 1252 case IP_DROP_MEMBERSHIP: 1253 case WS2_IPPROTO_OPT(IP_DROP_MEMBERSHIP_WS2): 1254 if (*optlen < sizeof(struct ip_mreq)) 1255 { 1256 dprintf(("IPPROTO_IP, IP_DROP_MEMBERSHIP, optlen too small")); 1257 WSASetLastError(WSAEFAULT); 1258 return SOCKET_ERROR; 1259 } 1260 ret = getsockopt(s, IPPROTO_IP, IP_DROP_MEMBERSHIP_OS2, (char *)optval, optlen); 1261 break; 1262 1263 case IP_MULTICAST_LOOP: 1264 case WS2_IPPROTO_OPT(IP_MULTICAST_LOOP_WS2): 1265 { 1266 if (*optlen < sizeof(u_char)) 1267 { 1268 dprintf(("IPPROTO_IP, IP_MULTICAST_LOOP/IP_MULTICAST_TTL, optlen too small")); 1269 WSASetLastError(WSAEFAULT); 1270 return SOCKET_ERROR; 1271 } 1272 ret = getsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP_OS2, (char *)optval, optlen); 1273 break; 1274 } 1275 1276 case IP_MULTICAST_TTL: 1277 case WS2_IPPROTO_OPT(IP_MULTICAST_TTL_WS2): 1278 if (*optlen < sizeof(u_char)) 1279 { 1280 dprintf(("IPPROTO_IP, IP_MULTICAST_TTL, optlen too small")); 1281 WSASetLastError(WSAEFAULT); 1282 return SOCKET_ERROR; 1283 } 1284 ret = getsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL_OS2, (char *)optval, optlen); 1285 break; 1286 1287 case IP_TTL: 1288 case WS2_IPPROTO_OPT(IP_TTL_WS2): 1289 if (*optlen < sizeof(u_int)) 1290 { 1291 dprintf(("IPPROTO_IP, IP_TTL_WS2, optlen too small")); 1292 WSASetLastError(WSAEFAULT); 1293 return SOCKET_ERROR; 1294 } 1295 ret = getsockopt(s, IPPROTO_IP, IP_TTL_OS2, (char *)optval, optlen); 1296 break; 1297 1298 case IP_TOS: 1299 case WS2_IPPROTO_OPT(IP_TOS_WS2): 1300 if (*optlen < sizeof(u_int)) 1301 { 1302 dprintf(("IPPROTO_IP, IP_TOS_WS2, optlen too small")); 1303 WSASetLastError(WSAEFAULT); 1304 return SOCKET_ERROR; 1305 } 1306 ret = getsockopt(s, IPPROTO_IP, IP_TOS_OS2, (char *)optval, optlen); 1307 break; 1308 1309 case WS2_IPPROTO_OPT(IP_HDRINCL_WS2): 1310 if (*optlen < sizeof(u_int)) 1311 { 1312 dprintf(("IPPROTO_IP, IP_HDRINCL_WS2, optlen too small")); 1313 WSASetLastError(WSAEFAULT); 1314 return SOCKET_ERROR; 1315 } 1316 ret = getsockopt(s, IPPROTO_IP, IP_HDRINCL_OS2, (char *)optval, optlen); 1317 break; 1318 1319 default: 1320 dprintf(("getsockopt: IPPROTO_IP, unknown option %x", optname)); 1321 WSASetLastError(WSAENOPROTOOPT); 1322 return SOCKET_ERROR; 1323 } 1324 } 1172 1325 else { 1173 1326 WSASetLastError(WSAEINVAL);
Note:
See TracChangeset
for help on using the changeset viewer.