>поподробнее, чего именно Вы хотите добиться ?
>просто SO_ORIGINAL_DST в Линуксе относится с пакетному фильтру и определен в
>ядерных хидерах, что вряд-ли позволит вот так вот просто взять и
>портировать в BSD..
Максим, спасибо за ответ.
Код, естественно, оформлен ввиде функций, но суть такая:
......
struct sockaddr_in addr;
int fd;
if ((fd = accept(serverSocket, (struct sockaddr*)&addr, &length)) < 0) {
perror("Error on accept() ");
exit(1);
}
.....
.....
struct sockaddr_in SAddr;
size = sizeof(SAddr);
if (getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, &SAddr, &size) < 0) {
perror();
...
fd1 = socket(AF_INET, SOCK_STREAM, 0);
...
if (connect(fd1, (struct sockaddr*)&SAddr, sizeof(SAddr)) < 0) {
perror("Connect to original destination failed.");
close(fd1);
exit(1);
}
.....
И как я уже говорил во Фрях это не работает, perror возвращает - ENOPROTOOPT: Protocol not available.