LINUX.ORG.RU

Валидатор IP-адресов

 , ,


2

3

Наваял софтину для проверки правильности написания IP-адресов (IPv4 и IPv6) на Си. Ничего сложного и оригинального, возможно, велосипед с квадратными колёсами, но это я в качестве тренировки, чисто для себя, так как на C пишу мало.

Цель написания — получить отзывы, поэтому с удовольствием жду обоснованную критику, лучше с патчами.

Если кому интересно, то исходники тут.

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

Ну да… нужно, кстати, посмотреть, как она правильно делается для проектов на Си.

post-factum ★★★★★
() автор топика
	if (ipv4 == 1)
		res = inet_pton(AF_INET, address, &(sa.sin_addr));

годный валидатор! аж пельмешкой подавился

hizel ★★★★★
()
Ответ на: комментарий от hizel

Зато работает. Альтернативой было клепать регекспы, но имел я такое счастье в баш-скриптах на продакшене.

post-factum ★★★★★
() автор топика
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от lazyklimm

Оп, а о тринарном забыл. Покручу, спасибо.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Альтернативой было клепать регекспы, но имел я такое счастье в баш-скриптах на продакшене.

а в чем проблема? главное - тесткейсы сделать

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

Ну я так подумал — есть же готовая функция, почему её не использовать.

post-factum ★★★★★
() автор топика

Может, и не велосипед

Но колеса треугольные. Открой для себя мир PCRE и сократи свой код в M раз.

PS Я вижу ты уже высказался насчет регекспов, нуууу... Что сказать? Клепай дальше в том же духе на здоровье.

Если жеват кактус долго-долго то он на вкус становится как текила :)

malbolge ★★
()
Ответ на: комментарий от zolden

не глумись, братюнь

% : ping 127.0.127 -c 1 && echo 'Alive!!!'
Alive!!!

zolden ★★★★★
()

Названия констант режут слух.

encyrtid ★★★★★
()

Не работает.

$ ./yaiv -4 -a 0x7f.0x1
0x7f.0x1: Malformed IPv4 address

$ ping -c 1 0x7f.0x1
PING 0x7f.0x1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.020 ms

--- 0x7f.0x1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.020/0.020/0.020/0.000 ms
Deleted
()
Ответ на: комментарий от Deleted

И так не работает.

$ ./yaiv -4 -a 017700000001
017700000001: Malformed IPv4 address

$ ping -c 1 017700000001
PING 017700000001 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.016 ms

--- 017700000001 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.016/0.016/0.016/0.000 ms
Deleted
()
Ответ на: комментарий от sdio

Откомпилируется одинаково же.

выглядит симпатичнее, читается лучше - имхо это тоже немаловажно

lazyklimm ★★★★★
()
Ответ на: комментарий от post-factum

Всегда кажется, что на аватаре плачет синий мишка.

anonymous
()
Ответ на: комментарий от Deleted

у вас система не феншуйная. в линупсовом man-е чотко вписано:

       AF_INET
              src points to a character string containing an IPv4 network address in dotted-decimal format, «ddd.ddd.ddd.ddd», where ddd
              is  a decimal number of up to three digits in the range 0 to 255.
hizel ★★★★★
()
Ответ на: комментарий от post-factum

третий аргумент inet_pton:

для v4 — это struct in_addr → 32 бита

для v6 — это struct in6_addr → 128 бит

а у тебя и там и там in_addr → переполнение в случае v6

beastie ★★★★★
()

EBAD! предлагаю переименовать директивы.

system-root ★★★★★
()
Ответ на: комментарий от hizel

да, но лучше сразу правильно, чем потом баги ловить.

beastie ★★★★★
()
Ответ на: комментарий от post-factum

Хотя интересно, почему оно не хавает.

в смысле не хавает? по моему наоборот хавает все подряд.

hizel ★★★★★
()
Ответ на: комментарий от post-factum

как скажешь, братиш
Каковы ваши дальнейшие планы? валидатор сетей? Поделись RFC если найдешь, а то был недавно тред на эту тему, но rfc там не нашли

zolden ★★★★★
()
Ответ на: комментарий от zolden

Перечитай внимательно исходный пост треда, чтобы увидеть, что это было just for fun, поэтому какие тут планы.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Я зачем этот hello world под GPL публиковать и по поводу него создавать тред на лоре? Я то думал, что тут мегаалгоритм, который уделывает по скорости inet_pton в N раз, а тут это ....

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