Ignore:
Timestamp:
01/14/19 15:37:27 (22 months ago)
Author:
Jacob Van Walraven <jcv9@…>
Branches:
develop
Children:
7aa03d9
Parents:
977e0db
Message:

improvements to meta-api

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/format_pcapng.c

    r977e0db re7132d6  
    9797} pcapng_stats_t;
    9898
     99typedef struct pcapng_decryption_secrets_header_t {
     100        uint32_t blocktype;
     101        uint32_t blocklen;
     102        uint32_t secrets_type;
     103        uint32_t secrets_len;
     104} pcapng_secrets_t;
     105
    99106typedef struct pcapng_custom_header_t {
    100107        uint32_t blocktype;
     
    21012108        uint16_t optcode;
    21022109
    2103         hdr = (struct pcapng_peeker *)packet->header;
    2104         ptr = packet->header;
     2110        hdr = (struct pcapng_peeker *)packet->buffer;
     2111        ptr = packet->buffer;
    21052112
    21062113        if (DATA(packet->trace)->byteswapped) {
     
    21102117        }
    21112118
    2112         /* Just return if data we want is not in this block */
     2119        /* If the data we want is not within this blocktype just return */
    21132120        if (blocktype != section_type) {
    21142121                return NULL;
     
    21172124        /* Skip x bytes to the options depending on what kind of packet this is */
    21182125        if (section_type == PCAPNG_SECTION_TYPE) { ptr += sizeof(pcapng_sec_t); }
    2119         if (section_type == PCAPNG_INTERFACE_TYPE) { ptr += sizeof(pcapng_int_t); }
    2120         if (section_type == PCAPNG_OLD_PACKET_TYPE) { ptr += sizeof(pcapng_opkt_t); }
    2121         if (section_type == PCAPNG_SIMPLE_PACKET_TYPE) { ptr += sizeof(pcapng_spkt_t); }
    2122         if (section_type == PCAPNG_NAME_RESOLUTION_TYPE) {
    2123                 /* look into this more */
    2124                 return NULL;
    2125         }
    2126         if (section_type == PCAPNG_INTERFACE_STATS_TYPE) { ptr += sizeof(pcapng_stats_t); }
    2127         if (section_type == PCAPNG_ENHANCED_PACKET_TYPE) { ptr += sizeof(pcapng_epkt_t); }
     2126        else if (section_type == PCAPNG_INTERFACE_TYPE) { ptr += sizeof(pcapng_int_t); }
     2127        else if (section_type == PCAPNG_OLD_PACKET_TYPE) { ptr += sizeof(pcapng_opkt_t); }
     2128        else if (section_type == PCAPNG_NAME_RESOLUTION_TYPE) { ptr += sizeof(pcapng_epkt_t); }
     2129        else if (section_type == PCAPNG_INTERFACE_STATS_TYPE) { ptr += sizeof(pcapng_stats_t); }
     2130        else if (section_type == PCAPNG_ENHANCED_PACKET_TYPE) {
     2131                /* jump over the the enchanced packet header and data to the options */
     2132                pcapng_epkt_t *epkthdr = (pcapng_epkt_t *)ptr;
     2133                uint32_t seclen;
     2134                if (DATA(packet->trace)->byteswapped) {
     2135                        seclen = byteswap32(epkthdr->caplen);
     2136                } else {
     2137                        seclen = epkthdr->caplen;
     2138                }
     2139                if ((seclen % 4) != 0) {
     2140                        ptr += seclen + (4 -(seclen % 4)) + sizeof(pcapng_secrets_t);
     2141                } else {
     2142                        ptr += seclen + sizeof(pcapng_secrets_t);
     2143                }
     2144        }
     2145        else if (section_type == PCAPNG_DECRYPTION_SECRETS_TYPE) {
     2146                /* jump over the decryption secrets header and data to the options */
     2147                pcapng_secrets_t *sechdr = (pcapng_secrets_t *)ptr;
     2148                uint32_t seclen;
     2149                if (DATA(packet->trace)->byteswapped) {
     2150                        seclen = byteswap32(sechdr->secrets_len);
     2151                } else {
     2152                        seclen = sechdr->secrets_len;
     2153                }
     2154                if ((seclen % 4) != 0) {
     2155                        ptr += seclen + (4 -(seclen % 4)) + sizeof(pcapng_secrets_t);
     2156                } else {
     2157                        ptr += seclen + sizeof(pcapng_secrets_t);
     2158                }
     2159        }
     2160        else { return NULL; }
    21282161
    21292162        /* Skip over the options till a match is found or they run out */
Note: See TracChangeset for help on using the changeset viewer.