Changes in uspace/srv/net/inetsrv/icmp.c [9749e47:a1a101d] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/inetsrv/icmp.c
r9749e47 ra1a101d 40 40 #include <mem.h> 41 41 #include <stdlib.h> 42 #include <types/inetping.h> 42 43 43 #include "icmp.h" 44 44 #include "icmp_std.h" … … 105 105 reply->checksum = host2uint16_t_be(checksum); 106 106 107 rdgram.iplink = 0;108 107 rdgram.src = dgram->dest; 109 108 rdgram.dest = dgram->src; … … 121 120 static int icmp_recv_echo_reply(inet_dgram_t *dgram) 122 121 { 122 icmp_echo_t *reply; 123 inetping_sdu_t sdu; 124 uint16_t ident; 125 123 126 log_msg(LOG_DEFAULT, LVL_DEBUG, "icmp_recv_echo_reply()"); 124 127 … … 126 129 return EINVAL; 127 130 128 icmp_echo_t *reply = (icmp_echo_t *) dgram->data; 129 130 inetping_sdu_t sdu; 131 reply = (icmp_echo_t *)dgram->data; 131 132 132 133 sdu.src = dgram->src; … … 135 136 sdu.data = reply + sizeof(icmp_echo_t); 136 137 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); 139 139 140 140 return inetping_recv(ident, &sdu); … … 143 143 int icmp_ping_send(uint16_t ident, inetping_sdu_t *sdu) 144 144 { 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); 147 154 if (rdata == NULL) 148 155 return ENOMEM; 149 156 150 icmp_echo_t *request = (icmp_echo_t *)rdata;157 request = (icmp_echo_t *)rdata; 151 158 152 159 request->type = ICMP_ECHO_REQUEST; … … 158 165 memcpy(rdata + sizeof(icmp_echo_t), sdu->data, sdu->size); 159 166 160 uint16_tchecksum = inet_checksum_calc(INET_CHECKSUM_INIT, rdata, rsize);167 checksum = inet_checksum_calc(INET_CHECKSUM_INIT, rdata, rsize); 161 168 request->checksum = host2uint16_t_be(checksum); 162 163 inet_dgram_t dgram;164 169 165 170 dgram.src = sdu->src; 166 171 dgram.dest = sdu->dest; 167 dgram.iplink = 0;168 172 dgram.tos = ICMP_TOS; 169 173 dgram.data = rdata; 170 174 dgram.size = rsize; 171 175 172 intrc = inet_route_packet(&dgram, IP_PROTO_ICMP, INET_TTL_MAX, 0);176 rc = inet_route_packet(&dgram, IP_PROTO_ICMP, INET_TTL_MAX, 0); 173 177 174 178 free(rdata);
Note:
See TracChangeset
for help on using the changeset viewer.