Changeset 67a14d4 for lib/protocols.c


Ignore:
Timestamp:
04/08/06 13:39:32 (15 years ago)
Author:
Perry Lorier <perry@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
aa67e26
Parents:
68155f1
Message:

Move more types to the libtrace standard (typedef'd libtrace_*_t)
Add casts where appropriate
Remove default:'s from enum'd switch()'s

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/protocols.c

    r64b6517 r67a14d4  
    1717                uint32_t *remaining)
    1818{
    19         libtrace_ether_t *eth = ethernet;
     19        libtrace_ether_t *eth = (libtrace_ether_t*)ethernet;
    2020
    2121        if (remaining) {
     
    5959static void *trace_get_payload_from_80211(void *link, uint16_t *type, uint32_t *remaining)
    6060{
    61         libtrace_80211_t *wifi = link;
    62         struct ieee_802_11_payload *eth;
     61        libtrace_80211_t *wifi;
     62        libtrace_802_11_payload_t *eth;
    6363
    6464        if (remaining && *remaining < sizeof(libtrace_80211_t))
    6565                return NULL;
     66
     67        wifi=(libtrace_80211_t*)link;
    6668
    6769        /* Data packet? */
     
    7375                return NULL;
    7476
    75         eth=(void*)((char*)wifi+sizeof(*eth));
     77        eth=(libtrace_802_11_payload_t *)((char*)wifi+sizeof(*eth));
    7678
    7779        if (*type) *type=eth->type;
     
    8385                uint16_t *type, uint32_t *remaining)
    8486{
    85         struct trace_sll_header_t *sll;
    86 
    87         sll = link;
     87        libtrace_sll_header_t *sll;
     88
     89        sll = (libtrace_sll_header_t*) link;
    8890
    8991        if (remaining) {
     
    102104{
    103105        /* 64 byte capture. */
    104         struct libtrace_llcsnap *llc = link;
    105 
    106         if (remaining) {
    107                 if (*remaining < sizeof(struct libtrace_llcsnap)+4)
    108                         return NULL;
    109                 *remaining-=(sizeof(struct libtrace_llcsnap)+4);
     106        libtrace_llcsnap_t *llc = (libtrace_llcsnap_t*)link;
     107
     108        if (remaining) {
     109                if (*remaining < sizeof(libtrace_llcsnap_t)+4)
     110                        return NULL;
     111                *remaining-=(sizeof(libtrace_llcsnap_t)+4);
    110112        }
    111113
     
    114116         * don't have time!
    115117         */
    116         llc = (void*)((char *)llc + 4);
     118        llc = (libtrace_llcsnap_t*)((char *)llc + 4);
    117119
    118120        if (*type) *type = ntohs(llc->type);
     
    125127{
    126128        /* 64 byte capture. */
    127         struct libtrace_pos *pos = link;
    128 
    129         if (remaining) {
    130                 if (*remaining < sizeof(struct libtrace_pos))
    131                         return NULL;
    132                 *remaining-=sizeof(struct libtrace_pos);
     129        libtrace_pos_t *pos = (libtrace_pos_t*)link;
     130
     131        if (remaining) {
     132                if (*remaining < sizeof(libtrace_pos_t))
     133                        return NULL;
     134                *remaining-=sizeof(libtrace_pos_t);
    133135        }
    134136
     
    141143                uint16_t *type, uint32_t *remaining)
    142144{
    143         struct trace_pflog_header_t *pflog = link;
     145        libtrace_pflog_header_t *pflog = (libtrace_pflog_header_t*)link;
    144146        if (remaining) {
    145147                if (*remaining<sizeof(*pflog))
     
    150152                switch(pflog->af) {
    151153                        case AF_INET6: *type=0x86DD; break;
    152                         case AF_INET: *type=0x0800; break;
     154                        case AF_INET:  *type=0x0800; break;
    153155                        default:
    154156                                      /* Unknown */
     
    204206                return NULL;
    205207
    206         return ret;
     208        return (libtrace_ip_t*)ret;
    207209}
    208210
     
    223225                return NULL;
    224226
    225         return ret;
     227        return (libtrace_ip6_t*)ret;
    226228}
    227229
     
    325327        switch (*proto) {
    326328                case 0x0800: /* IPv4 */
    327                         transport=trace_get_payload_from_ip(transport, proto, remaining);
     329                        transport=trace_get_payload_from_ip(
     330                                (libtrace_ip_t*)transport, proto, remaining);
    328331                        /* IPv6 */
    329332                        if (transport && *proto == 41) {
    330                                 transport=trace_get_payload_from_ip6(transport,
    331                                                 proto,remaining);
     333                                transport=trace_get_payload_from_ip6(
     334                                 (libtrace_ip6_t*)transport, proto,remaining);
    332335                        }
    333336                        return transport;
    334337                case 0x86DD: /* IPv6 */
    335                         return trace_get_payload_from_ip6(transport, proto, remaining);
     338                        return trace_get_payload_from_ip6(
     339                                (libtrace_ip6_t*)transport, proto, remaining);
    336340                       
    337341                default:
     
    345349        libtrace_tcp_t *tcp;
    346350
    347         tcp=trace_get_transport(packet,&proto,NULL);
     351        tcp=(libtrace_tcp_t*)trace_get_transport(packet,&proto,NULL);
    348352
    349353        if (proto != 6)
    350354                return NULL;
    351355
    352         return tcp;
     356        return (libtrace_tcp_t*)tcp;
    353357}
    354358
     
    369373        libtrace_udp_t *udp;
    370374
    371         udp=trace_get_transport(packet,&proto,NULL);
     375        udp=(libtrace_udp_t*)trace_get_transport(packet,&proto,NULL);
    372376
    373377        if (proto != 17)
     
    393397        libtrace_icmp_t *icmp;
    394398
    395         icmp=trace_get_transport(packet,&proto,NULL);
     399        icmp=(libtrace_icmp_t*)trace_get_transport(packet,&proto,NULL);
    396400
    397401        if (proto != 1)
     
    453457uint16_t trace_get_source_port(const libtrace_packet_t *packet)
    454458{
    455         struct ports_t *port = trace_get_transport((libtrace_packet_t*)packet,
     459        struct ports_t *port =
     460                (struct ports_t*)trace_get_transport((libtrace_packet_t*)packet,
    456461                        NULL, NULL);
    457462
     
    462467uint16_t trace_get_destination_port(const libtrace_packet_t *packet)
    463468{
    464         struct ports_t *port = trace_get_transport((libtrace_packet_t*)packet,
     469        struct ports_t *port =
     470                (struct ports_t*)trace_get_transport((libtrace_packet_t*)packet,
    465471                        NULL, NULL);
    466472
     
    471477uint8_t *trace_get_source_mac(libtrace_packet_t *packet) {
    472478        void *link = trace_get_link(packet);
    473         libtrace_80211_t *wifi = link;
    474         libtrace_ether_t *ethptr = link;
     479        libtrace_80211_t *wifi;
     480        libtrace_ether_t *ethptr = (libtrace_ether_t*)link;
    475481        if (!link)
    476482                return NULL;
    477483        switch (trace_get_link_type(packet)) {
    478484                case TRACE_TYPE_80211:
     485                        wifi=(libtrace_80211_t*)link;
    479486                        return (uint8_t*)&wifi->mac2;
     487                case TRACE_TYPE_80211_PRISM:
     488                        wifi=(libtrace_80211_t*)((char*)link+144);
     489                        return (uint8_t*)&wifi->mac2;
     490                case TRACE_TYPE_LEGACY_ETH:
    480491                case TRACE_TYPE_ETH:
    481492                        return (uint8_t*)&ethptr->ether_shost;
    482                 default:
    483                         fprintf(stderr,"Not implemented\n");
    484                         assert(0);
    485         }
     493                case TRACE_TYPE_LEGACY:
     494                case TRACE_TYPE_LEGACY_POS:
     495                case TRACE_TYPE_NONE:
     496                case TRACE_TYPE_ATM:
     497                case TRACE_TYPE_HDLC_POS:
     498                case TRACE_TYPE_LINUX_SLL:
     499                case TRACE_TYPE_PFLOG:
     500                case TRACE_TYPE_LEGACY_ATM:
     501                        return NULL;
     502        }
     503        fprintf(stderr,"Not implemented\n");
     504        assert(0);
     505        return NULL;
    486506}
    487507
    488508uint8_t *trace_get_destination_mac(libtrace_packet_t *packet) {
    489509        void *link = trace_get_link(packet);
    490         libtrace_80211_t *wifi = link;
    491         libtrace_ether_t *ethptr = link;
     510        libtrace_80211_t *wifi;
     511        libtrace_ether_t *ethptr = (libtrace_ether_t*)link;
    492512        if (!link)
    493513                return NULL;
    494514        switch (trace_get_link_type(packet)) {
    495515                case TRACE_TYPE_80211:
     516                        wifi=(libtrace_80211_t*)link;
     517                        return (uint8_t*)&wifi->mac1;
     518                case TRACE_TYPE_80211_PRISM:
     519                        wifi=(libtrace_80211_t*)((char*)link+144);
    496520                        return (uint8_t*)&wifi->mac1;
    497521                case TRACE_TYPE_ETH:
     522                case TRACE_TYPE_LEGACY_ETH:
    498523                        return (uint8_t*)&ethptr->ether_dhost;
    499                 default:
    500                         fprintf(stderr,"Not implemented\n");
    501                         assert(0);
    502         }
     524                case TRACE_TYPE_LEGACY_ATM:
     525                case TRACE_TYPE_LEGACY:
     526                case TRACE_TYPE_LEGACY_POS:
     527                case TRACE_TYPE_NONE:
     528                case TRACE_TYPE_ATM:
     529                case TRACE_TYPE_HDLC_POS:
     530                case TRACE_TYPE_LINUX_SLL:
     531                case TRACE_TYPE_PFLOG:
     532                        /* No MAC address */
     533                        return NULL;
     534        }
     535        fprintf(stderr,"Not implemented\n");
     536        assert(0);
     537        return NULL;
    503538}
    504539
     
    536571                {
    537572                        struct sockaddr_in *addr4=(struct sockaddr_in*)addr;
    538                         libtrace_ip_t *ip = transport;
     573                        libtrace_ip_t *ip = (libtrace_ip_t*)transport;
    539574                        addr4->sin_family=AF_INET;
    540575                        addr4->sin_port=0;
     
    545580                {
    546581                        struct sockaddr_in6 *addr6=(struct sockaddr_in6*)addr;
    547                         libtrace_ip6_t *ip6 = transport;
     582                        libtrace_ip6_t *ip6 = (libtrace_ip6_t*)transport;
    548583                        addr6->sin6_family=AF_INET6;
    549584                        addr6->sin6_port=0;
     
    590625                {
    591626                        struct sockaddr_in *addr4=(struct sockaddr_in*)addr;
    592                         libtrace_ip_t *ip = transport;
     627                        libtrace_ip_t *ip = (libtrace_ip_t*)transport;
    593628                        addr4->sin_family=AF_INET;
    594629                        addr4->sin_port=0;
     
    599634                {
    600635                        struct sockaddr_in6 *addr6=(struct sockaddr_in6*)addr;
    601                         libtrace_ip6_t *ip6 = transport;
     636                        libtrace_ip6_t *ip6 = (libtrace_ip6_t*)transport;
    602637                        addr6->sin6_family=AF_INET6;
    603638                        addr6->sin6_port=0;
Note: See TracChangeset for help on using the changeset viewer.