Changeset 81881e6


Ignore:
Timestamp:
05/18/18 11:39:59 (2 years ago)
Author:
Shane Alcock <salcock@…>
Branches:
cachetimestamps, develop, etsilive, master, rc-4.0.4, ringdecrementfix, ringperformance
Children:
691b182
Parents:
f35a853
git-author:
Shane Alcock <salcock@…> (04/10/18 15:13:05)
git-committer:
Shane Alcock <salcock@…> (05/18/18 11:39:59)
Message:

Add ETSI IRI decoding to libpacketdump

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpacketdump/link_22.c

    ra82a9e8 r81881e6  
    77
    88        char linespace[4096];
     9        char namesp[1024];
    910        int i;
    1011        uint8_t *cchdr = NULL;
     12        uint8_t *iricontents = NULL;
     13        uint8_t ident;
    1114        uint32_t rem = len;
    1215        wandder_etsispec_t *dec;
     
    2528        }
    2629
    27         cchdr = wandder_etsili_get_cc_contents(dec, &rem);
    28 
    29         wandder_free_etsili_decoder(dec);
     30        cchdr = wandder_etsili_get_cc_contents(dec, &rem, namesp, 1024);
    3031
    3132        if (cchdr) {
     33                printf(" ETSILI: ");
     34                for (i = 0; i < wandder_get_level(basedec); i++) {
     35                        printf("  ");
     36                }
     37                printf("%s: ...\n", namesp);
     38                wandder_free_etsili_decoder(dec);
    3239                /* XXX What if there is an IPv7?? */
    3340                decode_next((const char *)cchdr, rem, "eth",
    3441                                ((*cchdr) & 0xf0) == 0x40 ? TRACE_ETHERTYPE_IP :
    3542                                TRACE_ETHERTYPE_IPV6);
     43                return;
    3644        }
     45
     46        iricontents = wandder_etsili_get_iri_contents(dec, &rem, &ident,
     47                        namesp, 1024);
     48        if (iricontents) {
     49                printf(" ETSILI: ");
     50                /* hard-coded indentation, but easier than introducing
     51                 * yet another parameter to get_iri_contents()
     52                 */
     53                for (i = 0; i < 7; i++) {
     54                        printf("  ");
     55                }
     56                printf("%s: ...\n", namesp);
     57                wandder_free_etsili_decoder(dec);
     58                if (ident == WANDDER_IRI_CONTENT_IP) {
     59                        decode_next((const char *)iricontents, rem, "eth",
     60                                        ((*iricontents) & 0xf0) == 0x40 ?
     61                                        TRACE_ETHERTYPE_IP :
     62                                        TRACE_ETHERTYPE_IPV6);
     63                } else if (ident == WANDDER_IRI_CONTENT_SIP) {
     64                        decode_next((const char *)iricontents, rem, "udp",
     65                                        5060);
     66                }
     67        }
     68
    3769        return;
    3870}
Note: See TracChangeset for help on using the changeset viewer.