http://users.livejournal.com/_slw/ ([identity profile] http://users.livejournal.com/_slw/) wrote in [personal profile] nuclight 2012-05-25 07:13 am (UTC)

Вот без примеров непонятно, что ты имеешь в виду. То есть, для конструктивного продолжения нужно на чем-то предметном обсуждать, а не в общем. Ну как, воскресенье прошло, начеркал?..

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

DEF Eth :=
     dst_mac := octets(6) format eth_addr
     src_mac := octets(6) format eth_addr
     ethtype := uint16 byteorder MSB format hex

DEF Eth := -- 802.1q
     dst_mac := octets(6) format eth_addr
     src_mac := octets(6) format eth_addr
     tpid := uint16 byteorder MSB format hex eq 8100
     tci := uint16 byteorder MSB is
        vid := uint:12
        cfi := uint:1
        pcp := uint:3;
     ethtype := uint16 byteorder MSB format hex

DEF IPoEth :=
     Eth(ethtype eq 0800)
     IP_hdr

DEF IP_hdr (size = ihl*4) :=
     octet is
        ihl := uint:4
        ver := uint:4 eq 4;
     tos := uint8;
     total := uint16 byteorder msb
     id := uint16 byteorder msb
     uint16 byteorder msb is
         frag_offset := uint:13
         flags := uint:3 is
            mf := uint:1
            df := uint:1
     ttl := uint8
     proto := uint8
     hdr_csum := uint16 byteorder msb
     ip_src := octets(4) format ipv4
     ip_dst := octets(4) format ipv4
     options := fill IP_options

DEF UDPoIP :=
     IP_hdr(proto eq 17)
     UDP_hdr

DEF UDP_hdr :=
     sport := uint16 byteorder msb
     dport := uint16 byteorder msb
     len := uint16 byteorder msb
     udpcsum := uint16 byteorder msb format hex


получилось не очень хорошо, но в первом приближении так. не описана фрагментация, но мне кажется с этим можно справиться (надо ввести понятие stream и написать как ip фрагменты складываются в stream, который суть ip пакет размером более mtu. поскольку файрволу не надо терминировать в терминах ядра на себе протоколы, то такой путь вроде как возможен и нормален. ну и udp после этого будет не стекированным над ip заголовком, а внутри ip stream. а tcp будет свой stream порождать)

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting