qos (tos) в программах на С под линуксом
Здравствуйте уважаемые коллеги!
Написал простую тестовую сетевую программу на C, отправляющую UDP пакет с заданным параметром TOS в заголовке пакета. TOS устанавливается командой setsockopt:
=========
int new_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (new_socket < 0) {
printf("Socket()- couldn't create socket!\n");
return -1;
}
int fval=160; // fval=0xA0
if (setsockopt(new_socket, IPPROTO_IP, IP_TOS, (void*) &fval, sizeof(fval)) < 0) {
printf("setsockopt()- can't set tos!\n");
return -1;
}
=========
Так вот, если программа запускается от непривилегированного пользователя, то командой setsockopt не получается устанавливить байт TOS больше чем 0x9F. От рута все работает нормально. Просветите пожалуйста, почему так? Что нужно поменять в системе, чтобы setsockopt заработала и от обычного пользователя? Линукс - рэдхат какойто, 7 или 8, не помню точно.
Заранее спасибо!
Алексей