J’essaie d’utiliser setsockopt
pour définir la valeur IPTOS_THROUGHPUT
sur IPTOS_THROUGHPUT
. L’ setsockopt
renvoyé 0
. Cependant, getsockopt
indique que la valeur IP_TOS
est définie sur 1
, ce qui est différent de IPTOS_THROUGHPUT
( 0x8
). Quelqu’un at-il une idée de ce qui aurait pu causer l’inadéquation de la valeur IPTOS
dans les ensembles setsockopt
et getsockopt
?
Voici la sortie du journal:
Définir le marquage DSCP sur le support 26
setsockopt sur le socket 26 à 8 renvoie 0
- Initialisation des variabes auto et globales en C
- Un programme c pour parcourir une * n masortingce
- Gd Inline Assembly ‘Nd’ contrainte
- Pourquoi pas de fuite de mémoire?
- Convolution 3D avec Intel MKL
Le marquage DSCP sur la prise 26 est 1, différent de celui attendu 8
Ci-dessous le code:
int iptos = IPTOS_THROUGHPUT; log(debug, 10, "Set DSCP Marking on socket %d\n", sockfd); retval = setsockopt(sockfd, IPPROTO_TCP, IP_TOS, &iptos, sizeof(iptos)); if (retval<0) { log(error, 99, "Failed to set DSCP marking on socket %d with error %d\n", sockfd, retval); } else { log(debug, 10, "setsockopt on socket %d to %d returns %d\n", sockfd, iptos, retval); int tos=0; socklen_t toslen=sizeof(tos); retval = getsockopt(sockfd, IPPROTO_TCP, IP_TOS, &tos, &toslen); if(retval<0) { log(warning, 99, "Failed to get DSCP marking on socket %d with error %d\n", sockfd, retval); }else { if( tos != iptos ) { log(warning, 99, "DSCP marking on socket %d is %d, different from expected %d\n", sockfd, tos, iptos); retval = 9999; } else { log(debug, 10, "Success: Set DSCP Marking on socket %d to %d\n", sockfd, iptos); retval = 0; } } }
Vous devez utiliser l’option de niveau IPPROTO_IP
au lieu de IPPROTO_TCP