6
src/ip.h
6
src/ip.h
@@ -27,7 +27,7 @@ ip_read16(const uint8_t *src)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static inline uint8_t
|
static inline uint8_t
|
||||||
ip_get_version(const uint8_t *data)
|
ip_get_version(const uint8_t *data, int size)
|
||||||
{
|
{
|
||||||
if (size < 20)
|
if (size < 20)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -38,7 +38,7 @@ ip_get_version(const uint8_t *data)
|
|||||||
static inline int
|
static inline int
|
||||||
ip_is_valid(const uint8_t *data, int size)
|
ip_is_valid(const uint8_t *data, int size)
|
||||||
{
|
{
|
||||||
switch (ip_get_version(data)) {
|
switch (ip_get_version(data, size)) {
|
||||||
case 4: return size == ip_read16(&data[2]);
|
case 4: return size == ip_read16(&data[2]);
|
||||||
case 6: return size == ip_read16(&data[4]) + 40;
|
case 6: return size == ip_read16(&data[4]) + 40;
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,7 @@ ip_is_valid(const uint8_t *data, int size)
|
|||||||
static inline int
|
static inline int
|
||||||
ip_get_common(struct ip_common *ic, const uint8_t *data, int size)
|
ip_get_common(struct ip_common *ic, const uint8_t *data, int size)
|
||||||
{
|
{
|
||||||
switch (ip_get_version(data)) {
|
switch (ip_get_version(data, size)) {
|
||||||
case 4:
|
case 4:
|
||||||
ic->tc = data[1];
|
ic->tc = data[1];
|
||||||
ic->proto = data[9];
|
ic->proto = data[9];
|
||||||
|
|||||||
Reference in New Issue
Block a user