← All posts tagged programming

ArkanoiD

напоминаю, что готов дать денег людям, которые займутся интеграцией криптографии в этот девайс (zrtp/pgp/otr/шифрование файловой системы). То есть не тем, кто займется, а тем, кто таки сделает. Подробности обсуждаемы.

ArkanoiD

вопрос: а покажите мне портабельную функцию, которая по сокету выдаст имя интерфейса, на который он пришел?
hint: например, в линупсе для переадресованных iptables соединений getsockname уже даст вовсе не наш локальный адрес, а чорт знает что
hint2: существуют другие системы, кроме linux, solaris и *bsd.

ArkanoiD

есть смешная задачка: сделать функцию int generic_tunnel(int client_socket, int server_socket, int dynport_min, int dynport_max, int server_port, int nat) , которая бы открывала с помощью произвольного ядреного пакетного фильтра туннель, который бы ловил все приходящее с peername(client_socket) на некий порт на sockname(client_socket) в заданном динамическом диапазоне и перенаправлял на server_port на peername(server_socket). Ну и возвращала этот номер порта. Если с параметром NAT, то с адресной трансляцией на sockname(server_socket), если без, то без нее.

В чем засада: пакетный фильтр может быть произвольным: iptables, ipfilter, pf, ipfw, whatever.

Если вы знаете частное решение для какой-то реализации, ткните в него пальцем. Если вас читают люди, которые знают — порекомендуйте. Что все описано в соответствующих API я в курсе, просто не хочется вникать подробно в каждый конкретный случай, я так неделю провожусь со всеми виртуалками.

Призовая игра: придумайте, как реализовать коллбэк для сбора статистики по переданным байтам, когда соединение закроется (или отвалится по таймауту, если там UDP, например)

ArkanoiD

Sun Studio и MS Visual C++ очень плохо понимают flow в тех частях, где используются функции, завершающие работу программы. И хинт /UNREACHED/ игнорируют, уроды — выводят кучу бессмысленных предупреждений, которые приходится отключать. А я не люблю отключать предупреждения, пичяль.

ArkanoiD

вот люди говорят интересную штуку про указатели на функции в C: что их де нельзя кастить и передавать как попало, причем это относится и к параметрам! то есть указатель на функцию void (*) (void) в какой-нибудь табличке переходов, в который ты заносишь указатель на функцию с параметрами — это кагбе будет работать практически на всех современных архитектурах, но никто в общем-то ничего не обещал. что, правда?