Здравствуйте уважаемые коллеги!
Написал простую тестовую сетевую программу на 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, не помню точно.
Заранее спасибо!
Алексей
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [проблема с bind]Прием мультикаста с разных ip, но одинаковых портов (2010)
- Форум IP RAW socket how using (2005)
- Форум setsockopt (2009)
- Форум BROADCAST sendto вызывает Permission denied (2004)
- Форум Проблемка с bind (2003)
- Форум Не понимаю почему не работает (2013)
- Форум Запись инфы из UDP пакетов (2004)
- Форум Не работает прием Multicast сообщения на втором интрфейсе (2023)
- Форум [C] Получить данные на TCP сокет (2008)
- Форум raw sockets — sending udp datagram (2007)