У меня есть сценарий, когда клиент открывает TCP-соединение с сервером после установки некоторого значения IP TOS (setsockopt(.., IP_TOS, ..)
. На сервере я хочу получить полученное значение TOS и установить его в сокете, чтобы полученное TOS отражается обратно на пакетах сервер-клиент.
Проблема на стороне сервера, как я могу получить значение TOS, полученное от клиента? Я могу предположить, что клиент не будет изменять значение TOS в течение всего сеанса, поэтому достаточно сначала получить и установить значение TOS.
Установка IP_RECVTOS
и использование вспомогательных данных работает для UDP, но не для сокетов TCP. Как можно добиться чего-то подобного на TCP-сокетах? getsockopt(2)
с SO_PRIORITY
или IP_TOS
возвращает настроенные значения в локальном сокете. Так что, если я сделал setsockopt()
локально, то getsockopt()
отражает это значение. Это не отражает то, что получено в сети.