LINUX.ORG.RU

setsockopt


0

0

Возможно, глупый вопрос, но сам не могу допереть. Вот такое встретил в чужом коде:

#define SETSOCKOPT(optid, varptr, vartype, qty) \
{ \
unsigned int ret; \
int sockfd; \
if ((sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) == -1) { \
return -1; \
} \
if ((ret=setsockopt(sockfd, IPPROTO_IP, optid, (void *)varptr, sizeof(vartype)*qty)) != 0) { \
close(sockfd); \
return ret; \
} \
close(sockfd); \
}

Возникает вопрос - какой смысл выставлять опции на сокете, который потом закрывается? Более того, везде где вызывается этот макрос, 'sockefd' никак не используется.

Помогите сняться с ручника, заранее огромное спасибо!

★★

Ответ на: комментарий от gorilych

> может, это проверка какая-то.

тоже так показалось

dilmah ★★★★★
()

тот же netfilter активно юзает (юзал?) setsockopt для передачи инфы в firewalling code ядра. там через setsockopt можно например сбросить все правила файрволла :)

BreadFan ★★
()

> Возникает вопрос - какой смысл выставлять опции на сокете, который 
> потом закрывается?

вполне возможно, что таким образом идет установка/сброс параметров, не связанных с конкретным сокетом, но использующих интерфейс setsockopt для доступа

rei3er
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.