Commit e553272d759b41e6d1de226c8fad0aab56fefdd6
1 parent
3aee288b
> 32 KB packet handling (Ed Swierk)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1891 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
5 additions
and
9 deletions
slirp/ip.h
| @@ -75,10 +75,6 @@ typedef u_int32_t n_long; /* long as received from the net */ | @@ -75,10 +75,6 @@ typedef u_int32_t n_long; /* long as received from the net */ | ||
| 75 | 75 | ||
| 76 | /* | 76 | /* |
| 77 | * Structure of an internet header, naked of options. | 77 | * Structure of an internet header, naked of options. |
| 78 | - * | ||
| 79 | - * We declare ip_len and ip_off to be short, rather than u_short | ||
| 80 | - * pragmatically since otherwise unsigned comparisons can result | ||
| 81 | - * against negative integers quite easily, and fail in subtle ways. | ||
| 82 | */ | 78 | */ |
| 83 | struct ip { | 79 | struct ip { |
| 84 | #ifdef WORDS_BIGENDIAN | 80 | #ifdef WORDS_BIGENDIAN |
| @@ -89,9 +85,9 @@ struct ip { | @@ -89,9 +85,9 @@ struct ip { | ||
| 89 | ip_v:4; /* version */ | 85 | ip_v:4; /* version */ |
| 90 | #endif | 86 | #endif |
| 91 | u_int8_t ip_tos; /* type of service */ | 87 | u_int8_t ip_tos; /* type of service */ |
| 92 | - int16_t ip_len; /* total length */ | 88 | + u_int16_t ip_len; /* total length */ |
| 93 | u_int16_t ip_id; /* identification */ | 89 | u_int16_t ip_id; /* identification */ |
| 94 | - int16_t ip_off; /* fragment offset field */ | 90 | + u_int16_t ip_off; /* fragment offset field */ |
| 95 | #define IP_DF 0x4000 /* don't fragment flag */ | 91 | #define IP_DF 0x4000 /* don't fragment flag */ |
| 96 | #define IP_MF 0x2000 /* more fragments flag */ | 92 | #define IP_MF 0x2000 /* more fragments flag */ |
| 97 | #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ | 93 | #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ |
| @@ -212,7 +208,7 @@ struct ipovly { | @@ -212,7 +208,7 @@ struct ipovly { | ||
| 212 | caddr32_t ih_next, ih_prev; /* for protocol sequence q's */ | 208 | caddr32_t ih_next, ih_prev; /* for protocol sequence q's */ |
| 213 | u_int8_t ih_x1; /* (unused) */ | 209 | u_int8_t ih_x1; /* (unused) */ |
| 214 | u_int8_t ih_pr; /* protocol */ | 210 | u_int8_t ih_pr; /* protocol */ |
| 215 | - int16_t ih_len; /* protocol length */ | 211 | + u_int16_t ih_len; /* protocol length */ |
| 216 | struct in_addr ih_src; /* source internet address */ | 212 | struct in_addr ih_src; /* source internet address */ |
| 217 | struct in_addr ih_dst; /* destination internet address */ | 213 | struct in_addr ih_dst; /* destination internet address */ |
| 218 | }; | 214 | }; |
| @@ -253,9 +249,9 @@ struct ipasfrag { | @@ -253,9 +249,9 @@ struct ipasfrag { | ||
| 253 | u_int8_t ipf_mff; /* XXX overlays ip_tos: use low bit | 249 | u_int8_t ipf_mff; /* XXX overlays ip_tos: use low bit |
| 254 | * to avoid destroying tos (PPPDTRuu); | 250 | * to avoid destroying tos (PPPDTRuu); |
| 255 | * copied from (ip_off&IP_MF) */ | 251 | * copied from (ip_off&IP_MF) */ |
| 256 | - int16_t ip_len; | 252 | + u_int16_t ip_len; |
| 257 | u_int16_t ip_id; | 253 | u_int16_t ip_id; |
| 258 | - int16_t ip_off; | 254 | + u_int16_t ip_off; |
| 259 | u_int8_t ip_ttl; | 255 | u_int8_t ip_ttl; |
| 260 | u_int8_t ip_p; | 256 | u_int8_t ip_p; |
| 261 | u_int16_t ip_sum; | 257 | u_int16_t ip_sum; |