Changeset f023251 in mainline for uspace/srv/net/inetsrv/icmp.c


Ignore:
Timestamp:
2013-09-29T21:06:10Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e948fde
Parents:
13be2583
Message:

HelenOS internet address version should not be based on BSD sockets definition.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/inetsrv/icmp.c

    r13be2583 rf023251  
    123123{
    124124        log_msg(LOG_DEFAULT, LVL_DEBUG, "icmp_recv_echo_reply()");
    125        
     125
    126126        if (dgram->size < sizeof(icmp_echo_t))
    127127                return EINVAL;
    128        
     128
    129129        icmp_echo_t *reply = (icmp_echo_t *) dgram->data;
    130        
     130
    131131        inetping_sdu_t sdu;
    132        
    133         uint16_t family = inet_addr_get(&dgram->src, &sdu.src, NULL);
    134         if (family != AF_INET)
     132
     133        ip_ver_t ver = inet_addr_get(&dgram->src, &sdu.src, NULL);
     134        if (ver != ip_v4)
    135135                return EINVAL;
    136        
    137         family = inet_addr_get(&dgram->dest, &sdu.dest, NULL);
    138         if (family != AF_INET)
     136
     137        ver = inet_addr_get(&dgram->dest, &sdu.dest, NULL);
     138        if (ver != ip_v4)
    139139                return EINVAL;
    140        
     140
    141141        sdu.seq_no = uint16_t_be2host(reply->seq_no);
    142142        sdu.data = reply + sizeof(icmp_echo_t);
    143143        sdu.size = dgram->size - sizeof(icmp_echo_t);
    144        
     144
    145145        uint16_t ident = uint16_t_be2host(reply->ident);
    146146
     
    154154        if (rdata == NULL)
    155155                return ENOMEM;
    156        
     156
    157157        icmp_echo_t *request = (icmp_echo_t *) rdata;
    158        
     158
    159159        request->type = ICMP_ECHO_REQUEST;
    160160        request->code = 0;
     
    162162        request->ident = host2uint16_t_be(ident);
    163163        request->seq_no = host2uint16_t_be(sdu->seq_no);
    164        
     164
    165165        memcpy(rdata + sizeof(icmp_echo_t), sdu->data, sdu->size);
    166        
     166
    167167        uint16_t checksum = inet_checksum_calc(INET_CHECKSUM_INIT, rdata, rsize);
    168168        request->checksum = host2uint16_t_be(checksum);
    169        
     169
    170170        inet_dgram_t dgram;
    171        
     171
    172172        inet_addr_set(sdu->src, &dgram.src);
    173173        inet_addr_set(sdu->dest, &dgram.dest);
    174        
     174
    175175        dgram.iplink = 0;
    176176        dgram.tos = ICMP_TOS;
    177177        dgram.data = rdata;
    178178        dgram.size = rsize;
    179        
     179
    180180        int rc = inet_route_packet(&dgram, IP_PROTO_ICMP, INET_TTL_MAX, 0);
    181        
     181
    182182        free(rdata);
    183183        return rc;
Note: See TracChangeset for help on using the changeset viewer.