LINUX.ORG.RU

Структуры нашёл тут:
/usr/include/netinet/ip.h
/usr/include/netinet/udp.h

Осталось узнать, если функции, их заполняющие.

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

Уже догнал. А с ipv6 тоже прокатит?

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

По ходу, можно проверить первый байт на версию IP протокола, а затем кастануть.

UVV ★★★★★
() автор топика

Всем спасибо, что зашли в мой тред. Чмоки в этом чатике.

UVV ★★★★★
() автор топика

А есть готовые функции

Без применения сторонних библиотек

Можешь пояснить, как эти две вещи сочетаются? Если тебе нужны готовые функции, они будут в составе библиотеки. А если нет сторонних библиотек (или ты пишешь свою), откуда возьмутся готовые функции?

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

Доза упорина поразила даже пятизвездочников.

grouzen ★★
()

Заголовок — это обычная структура, а не xml, так что там нечего парсить.

Единственное, о чем тебе нужно беспокоиться, — это порядок байт.

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

но наверное это учтено при помощи всяких директив GCC

Особенно при сборке clang'ом.

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 1)
Ответ на: комментарий от ttnl

Ну т.е. htonl для всех целых, которые больше байта размером, правильно?

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

из /usr/include/netinet/ip.h

#if __BYTE_ORDER == __LITTLE_ENDIAN
    unsigned int ihl:4;
    unsigned int version:4;
#elif __BYTE_ORDER == __BIG_ENDIAN
    unsigned int version:4;
    unsigned int ihl:4;
#else
# error "Please fix <bits/endian.h>"
#endif
А в каком случае может получиться little endian? Я так понял, что для IP Header'a он всегда big endian. Ведь здесь же не об архитектуре речь идёт?

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

А в каком случае может получиться little endian? Я так понял, что для IP Header'a он всегда big endian.

Это порядок байт архитектуры. Little endian — на интеле.

#define странен. На первый взгляд похоже на какие-то gcc-шные правила объявляения битовых полей.

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

А в каком случае может получиться little endian?

ну допустим ты не знаешь про htonl и пишешь в поле получателя 0x7f000001 (127.0.0.1). Если такое провернуть на x86 например, то пакет получит какой-нибудь 1.0.0.127.

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

Заголовок — это обычная структура, а не xml, так что там нечего парсить.

Улыбнуло :) С засильем php-шников и яваскриптеров это понятно.

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

Улыбнуло :) С засильем php-шников и яваскриптеров это понятно.

К чему ты написал это сюда? Я никоем образом не отношусь ни к пхпшникам, ни к яваскриптерам.

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

А я тебя и не называл ни тем, ни другим. Понравилась сама фраза про xml.

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