Ignore:
File:
1 edited

Legend:

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

    r9749e47 ra1a101d  
    4040#include <mem.h>
    4141#include <stdlib.h>
    42 #include <types/inetping.h>
     42
    4343#include "icmp.h"
    4444#include "icmp_std.h"
     
    105105        reply->checksum = host2uint16_t_be(checksum);
    106106
    107         rdgram.iplink = 0;
    108107        rdgram.src = dgram->dest;
    109108        rdgram.dest = dgram->src;
     
    121120static int icmp_recv_echo_reply(inet_dgram_t *dgram)
    122121{
     122        icmp_echo_t *reply;
     123        inetping_sdu_t sdu;
     124        uint16_t ident;
     125
    123126        log_msg(LOG_DEFAULT, LVL_DEBUG, "icmp_recv_echo_reply()");
    124127
     
    126129                return EINVAL;
    127130
    128         icmp_echo_t *reply = (icmp_echo_t *) dgram->data;
    129 
    130         inetping_sdu_t sdu;
     131        reply = (icmp_echo_t *)dgram->data;
    131132
    132133        sdu.src = dgram->src;
     
    135136        sdu.data = reply + sizeof(icmp_echo_t);
    136137        sdu.size = dgram->size - sizeof(icmp_echo_t);
    137 
    138         uint16_t ident = uint16_t_be2host(reply->ident);
     138        ident = uint16_t_be2host(reply->ident);
    139139
    140140        return inetping_recv(ident, &sdu);
     
    143143int icmp_ping_send(uint16_t ident, inetping_sdu_t *sdu)
    144144{
    145         size_t rsize = sizeof(icmp_echo_t) + sdu->size;
    146         void *rdata = calloc(rsize, 1);
     145        inet_dgram_t dgram;
     146        icmp_echo_t *request;
     147        void *rdata;
     148        size_t rsize;
     149        uint16_t checksum;
     150        int rc;
     151
     152        rsize = sizeof(icmp_echo_t) + sdu->size;
     153        rdata = calloc(rsize, 1);
    147154        if (rdata == NULL)
    148155                return ENOMEM;
    149156
    150         icmp_echo_t *request = (icmp_echo_t *) rdata;
     157        request = (icmp_echo_t *)rdata;
    151158
    152159        request->type = ICMP_ECHO_REQUEST;
     
    158165        memcpy(rdata + sizeof(icmp_echo_t), sdu->data, sdu->size);
    159166
    160         uint16_t checksum = inet_checksum_calc(INET_CHECKSUM_INIT, rdata, rsize);
     167        checksum = inet_checksum_calc(INET_CHECKSUM_INIT, rdata, rsize);
    161168        request->checksum = host2uint16_t_be(checksum);
    162 
    163         inet_dgram_t dgram;
    164169
    165170        dgram.src = sdu->src;
    166171        dgram.dest = sdu->dest;
    167         dgram.iplink = 0;
    168172        dgram.tos = ICMP_TOS;
    169173        dgram.data = rdata;
    170174        dgram.size = rsize;
    171175
    172         int rc = inet_route_packet(&dgram, IP_PROTO_ICMP, INET_TTL_MAX, 0);
     176        rc = inet_route_packet(&dgram, IP_PROTO_ICMP, INET_TTL_MAX, 0);
    173177
    174178        free(rdata);
Note: See TracChangeset for help on using the changeset viewer.