projects
/
l2tpns.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix checksum recalc
[l2tpns.git]
/
l2tpns.c
diff --git
a/l2tpns.c
b/l2tpns.c
index
67211ce
..
6effc9f
100644
(file)
--- a/
l2tpns.c
+++ b/
l2tpns.c
@@
-4,7
+4,7
@@
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
// vim: sw=8 ts=8
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
// vim: sw=8 ts=8
-char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.14
6 2005/11/04 14:41:50
bodea Exp $";
+char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.14
9 2005/11/17 06:46:24
bodea Exp $";
#include <arpa/inet.h>
#include <assert.h>
#include <arpa/inet.h>
#include <assert.h>
@@
-1043,7
+1043,7
@@
void adjust_tcp_mss(sessionidt s, tunnelidt t, uint8_t *buf, int len, uint8_t *t
sum = orig + (~MSS & 0xffff);
sum += ntohs(*(uint16_t *) (tcp + 16));
sum = (sum & 0xffff) + (sum >> 16);
sum = orig + (~MSS & 0xffff);
sum += ntohs(*(uint16_t *) (tcp + 16));
sum = (sum & 0xffff) + (sum >> 16);
- *(uint16_t *) (tcp + 16) = htons(sum);
+ *(uint16_t *) (tcp + 16) = htons(sum
+ (sum >> 16)
);
}
// process outgoing (to tunnel) IP
}
// process outgoing (to tunnel) IP
@@
-1170,7
+1170,8
@@
static void processipout(uint8_t *buf, int len)
master_throttle_packet(sp->tbf_out, data, size);
return;
}
master_throttle_packet(sp->tbf_out, data, size);
return;
}
- else if (sp->walled_garden && !config->cluster_iam_master)
+
+ if (sp->walled_garden && !config->cluster_iam_master)
{
// We are walled-gardening this
master_garden_packet(s, data, size);
{
// We are walled-gardening this
master_garden_packet(s, data, size);
@@
-5350,7
+5351,9
@@
int ip_filter(uint8_t *buf, int len, uint8_t filter)
if (frag_offset)
{
if (frag_offset)
{
- if (!rule->frag || rule->action == FILTER_ACTION_DENY)
+ // layer 4 deny rules are skipped
+ if (rule->action == FILTER_ACTION_DENY &&
+ (rule->src_ports.op || rule->dst_ports.op || rule->tcp_flag_op))
continue;
}
else
continue;
}
else