#include "lwip/opt.h"#include "lwip/def.h"#include "lwip/inet.h"Include dependency graph for inet6.c:
Go to the source code of this file.
Functions | |
| u32_t | chksum (void *dataptr, u16_t len) |
| u16_t | inet_chksum_pseudo (struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, u8_t proto, u32_t proto_len) |
| u16_t | inet_chksum (void *dataptr, u16_t len) |
| u16_t | inet_chksum_pbuf (struct pbuf *p) |
|
||||||||||||
|
Definition at line 65 of file inet6.c. References htons, len, u16_t, u32_t, and u8_t. Referenced by inet_chksum(), inet_chksum_pbuf(), and inet_chksum_pseudo().
00066 {
00067 u16_t *sdataptr = dataptr;
00068 u32_t acc;
00069
00070
00071 for(acc = 0; len > 1; len -= 2) {
00072 acc += *sdataptr++;
00073 }
00074
00075 /* add up any odd byte */
00076 if(len == 1) {
00077 acc += htons((u16_t)(*(u8_t *)dataptr) << 8);
00078 }
00079
00080 return acc;
00081
00082 }
|
|
||||||||||||
|
Definition at line 139 of file inet6.c. References chksum(), len, lwip_chksum(), u16_t, and u32_t. Referenced by icmp_dest_unreach(), icmp_time_exceeded(), ip_frag(), ip_input(), ip_output_if(), and ip_reass().
|
Here is the call graph for this function:
|
|
Definition at line 150 of file inet6.c. References chksum(), lwip_chksum(), NULL, u32_t, and u8_t. Referenced by icmp_input().
00151 {
00152 u32_t acc;
00153 struct pbuf *q;
00154 u8_t swapped;
00155
00156 acc = 0;
00157 swapped = 0;
00158 for(q = p; q != NULL; q = q->next) {
00159 acc += chksum(q->payload, q->len);
00160 while(acc >> 16) {
00161 acc = (acc & 0xffff) + (acc >> 16);
00162 }
00163 if(q->len % 2 != 0) {
00164 swapped = 1 - swapped;
00165 acc = (acc & 0xff << 8) | (acc & 0xff00 >> 8);
00166 }
00167 }
00168
00169 if(swapped) {
00170 acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);
00171 }
00172 return ~(acc & 0xffff);
00173 }
|
Here is the call graph for this function:
|
||||||||||||||||||||||||
|
Definition at line 90 of file inet6.c. References ip_addr::addr, chksum(), htons, NULL, u16_t, u32_t, and u8_t. Referenced by icmp_input().
00093 {
00094 u32_t acc;
00095 struct pbuf *q;
00096 u8_t swapped, i;
00097
00098 acc = 0;
00099 swapped = 0;
00100 for(q = p; q != NULL; q = q->next) {
00101 acc += chksum(q->payload, q->len);
00102 while(acc >> 16) {
00103 acc = (acc & 0xffff) + (acc >> 16);
00104 }
00105 if(q->len % 2 != 0) {
00106 swapped = 1 - swapped;
00107 acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);
00108 }
00109 }
00110
00111 if(swapped) {
00112 acc = ((acc & 0xff) << 8) | ((acc & 0xff00) >> 8);
00113 }
00114
00115 for(i = 0; i < 8; i++) {
00116 acc += ((u16_t *)src->addr)[i] & 0xffff;
00117 acc += ((u16_t *)dest->addr)[i] & 0xffff;
00118 while(acc >> 16) {
00119 acc = (acc & 0xffff) + (acc >> 16);
00120 }
00121 }
00122 acc += (u16_t)htons((u16_t)proto);
00123 acc += ((u16_t *)&proto_len)[0] & 0xffff;
00124 acc += ((u16_t *)&proto_len)[1] & 0xffff;
00125
00126 while(acc >> 16) {
00127 acc = (acc & 0xffff) + (acc >> 16);
00128 }
00129 return ~(acc & 0xffff);
00130 }
|
Here is the call graph for this function:
1.3.4