Code cleanup

This commit is contained in:
angt
2016-01-04 20:07:11 +01:00
parent 8fa2322314
commit bfd81e9666
2 changed files with 52 additions and 73 deletions

View File

@@ -2,56 +2,38 @@
#include <stdint.h>
struct ip_common {
uint8_t version;
uint8_t proto;
uint8_t hdr_size;
uint16_t size;
};
_pure_
static inline int ip_get_version (const uint8_t *data, size_t size)
static inline uint8_t ip_get_version (const uint8_t *data, size_t size)
{
if (size<20) // XXX
return -1; // XXX
if (size<20)
return 0;
return data[0]>>4;
}
_pure_
static inline ssize_t ip_get_size (const int ip_version, const uint8_t *data, size_t size)
static inline int ip_get_common (struct ip_common *ic, const uint8_t *data, size_t size)
{
switch (ip_version) {
ic->version = ip_get_version(data, size);
switch (ic->version) {
case 4:
return ((data[2]<<8)|data[3]);
ic->proto = data[9];
ic->hdr_size = (data[0]&0xF)<<2;
ic->size = ((data[2]<<8)|data[3]);
return 0;
case 6:
return ((data[4]<<8)|data[5])+40;
case -1:
return -1;
ic->proto = data[6];
ic->hdr_size = 40;
ic->size = ((data[4]<<8)|data[5])+40;
return 0;
}
return 0;
}
_pure_
static inline ssize_t ip_get_proto (const int ip_version, const uint8_t *data, size_t size)
{
switch (ip_version) {
case 4:
return data[9];
case 6:
return data[6];
case -1:
return -1;
}
return 0;
}
_pure_
static inline ssize_t ip_get_hdr_size (const int ip_version, const uint8_t *data, size_t size)
{
switch (ip_version) {
case 4:
return (data[0]&0xF)<<2;
case 6:
return 40;
case -1:
return -1;
}
return 0;
return -1;
}