Update debian/changelog
This commit is contained in:
parent
b85ea86670
commit
f5354e1754
3 changed files with 46 additions and 36 deletions
6
debian/changelog
vendored
6
debian/changelog
vendored
|
|
@ -1,3 +1,9 @@
|
|||
l2tpns (2.2.1-2fdn3.5) unstable; urgency=low
|
||||
|
||||
* Update debian/changelog
|
||||
|
||||
-- Fernando Alves <fernando.alves@sameswireless.fr> Sun, 10 Feb 2013 23:39:56 +0100
|
||||
|
||||
l2tpns (2.2.1-2fdn3.4) unstable; urgency=low
|
||||
|
||||
* Add parameter to disable the send of the L2TP HELLO message (Apple compatibility).
|
||||
|
|
|
|||
8
l2tpns.h
8
l2tpns.h
|
|
@ -64,7 +64,7 @@
|
|||
#define MAXFRAGLEN 1496 // Maximum length for Multilink fragment (The multilink may contain only one link)
|
||||
#define MAXFRAGNUM 512 // Maximum number of Multilink fragment in a bundle (must be in the form of 2^X)
|
||||
// it's not expected to have a space for more than 10 unassembled packets = 10 * MAXBUNDLESES
|
||||
#define MAXFRAGNUM_MASK 511 // Must be equal to MAXFRAGNUM-1
|
||||
#define MAXFRAGNUM_MASK (MAXFRAGNUM - 1) // Must be equal to MAXFRAGNUM-1
|
||||
|
||||
// Constants
|
||||
#ifndef ETCDIR
|
||||
|
|
@ -356,9 +356,9 @@ bundlet;
|
|||
|
||||
typedef struct
|
||||
{
|
||||
fragmentt fragment[MAXFRAGNUM];
|
||||
uint8_t reassembled_frame[MAXETHER]; // The reassembled frame
|
||||
uint16_t re_frame_len; // The reassembled frame length
|
||||
fragmentt fragment[MAXFRAGNUM];
|
||||
uint8_t reassembled_frame[MAXETHER]; // The reassembled frame
|
||||
uint16_t re_frame_len; // The reassembled frame length
|
||||
uint16_t re_frame_begin_index, re_frame_end_index; // reassembled frame begin index, end index respectively
|
||||
uint16_t start_index, end_index; // start and end sequence numbers available on the fragments array respectively
|
||||
uint32_t M; // Minumum frame sequence number received over all bundle members
|
||||
|
|
|
|||
68
ppp.c
68
ppp.c
|
|
@ -1204,24 +1204,24 @@ static void setepdis(epdist *ep1, epdist ep2)
|
|||
|
||||
static bundleidt new_bundle()
|
||||
{
|
||||
bundleidt i;
|
||||
for (i = 1; i < MAXBUNDLE; i++)
|
||||
{
|
||||
if (bundle[i].state == BUNDLEFREE)
|
||||
{
|
||||
LOG(4, 0, 0, "MPPP: Assigning bundle ID %d\n", i);
|
||||
bundle[i].num_of_links = 1;
|
||||
bundle[i].last_check = time_now; // Initialize last_check value
|
||||
bundle[i].state = BUNDLEOPEN;
|
||||
bundle[i].current_ses = -1; // This is to enforce the first session 0 to be used at first
|
||||
bundleidt i;
|
||||
for (i = 1; i < MAXBUNDLE; i++)
|
||||
{
|
||||
if (bundle[i].state == BUNDLEFREE)
|
||||
{
|
||||
LOG(4, 0, 0, "MPPP: Assigning bundle ID %d\n", i);
|
||||
bundle[i].num_of_links = 1;
|
||||
bundle[i].last_check = time_now; // Initialize last_check value
|
||||
bundle[i].state = BUNDLEOPEN;
|
||||
bundle[i].current_ses = -1; // This is to enforce the first session 0 to be used at first
|
||||
memset(&frag[i], 0, sizeof(fragmentationt));
|
||||
if (i > config->cluster_highest_bundleid)
|
||||
config->cluster_highest_bundleid = i;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
LOG(0, 0, 0, "MPPP: Can't find a free bundle! There shouldn't be this many in use!\n");
|
||||
return 0;
|
||||
if (i > config->cluster_highest_bundleid)
|
||||
config->cluster_highest_bundleid = i;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
LOG(0, 0, 0, "MPPP: Can't find a free bundle! There shouldn't be this many in use!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ipcp_open(sessionidt s, tunnelidt t)
|
||||
|
|
@ -1934,7 +1934,7 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
|||
{
|
||||
// There have a long break of the link !!!!!!!!
|
||||
// M_offset is bigger that the fragmentation buffer size
|
||||
LOG(3, s, t, "MPPP: M_offset out of range, min:%d, begin_seq:%d, jitteravg:%d\n", Mmin, this_fragmentation->start_seq, sess_local[s].jitteravg);
|
||||
LOG(3, s, t, "MPPP: M_offset out of range, min:%d, begin_seq:%d\n", Mmin, this_fragmentation->start_seq);
|
||||
|
||||
// Calculate the new start index, the previous frag are lost
|
||||
begin_index = (M_offset + this_fragmentation->start_index) & MAXFRAGNUM_MASK;
|
||||
|
|
@ -1951,7 +1951,7 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
|||
if (frag_offset < 0)
|
||||
{
|
||||
// this packet comes before the next
|
||||
LOG(3, s, t, "MPPP: packet comes before the next, seq:%d, begin_seq:%d, size frag:%d\n", seq_num, this_fragmentation->start_seq, l);
|
||||
LOG(3, s, t, "MPPP: (COMES BEFORE) the next, seq:%d, begin_seq:%d, size_frag:%d, flags:%02X is LOST\n", seq_num, this_fragmentation->start_seq, l, flags);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1959,7 +1959,7 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
|||
if (frag_offset >= MAXFRAGNUM)
|
||||
{
|
||||
// frag_offset is bigger that the fragmentation buffer size
|
||||
LOG(3, s, t, "MPPP: Index out of range, seq:%d, begin_seq:%d, jitteravg:%d\n", seq_num, this_fragmentation->start_seq, sess_local[s].jitteravg);
|
||||
LOG(3, s, t, "MPPP: Index out of range, seq:%d, begin_seq:%d\n", seq_num, this_fragmentation->start_seq);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1971,8 +1971,8 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
|||
|
||||
if (this_frag->length > 0)
|
||||
// This fragment is lost, It was around the buffer and it was never completed the packet.
|
||||
LOG(3, this_frag->sid, this_frag->tid, "MPPP: (INSERT) seq_num:%d frag_index:%d flags:%d jitteravg:%d is LOST\n",
|
||||
this_frag->seq, frag_index, this_frag->flags, this_frag->jitteravg);
|
||||
LOG(3, this_frag->sid, this_frag->tid, "MPPP: (INSERT) seq_num:%d frag_index:%d flags:%02X is LOST\n",
|
||||
this_frag->seq, frag_index, this_frag->flags);
|
||||
|
||||
this_frag->length = l;
|
||||
this_frag->sid = s;
|
||||
|
|
@ -2001,9 +2001,9 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
|||
{
|
||||
// This fragment is lost, It was around the buffer and it was never completed the packet.
|
||||
LOG(3, this_fragmentation->fragment[frag_index_next].sid, this_fragmentation->fragment[frag_index_next].tid,
|
||||
"MPPP: (NEXT) seq_num:%d frag_index:%d flags:%d jitteravg:%d is LOST\n",
|
||||
"MPPP: (NEXT) seq_num:%d frag_index:%d flags:%02X is LOST\n",
|
||||
this_fragmentation->fragment[frag_index_next].seq, frag_index_next,
|
||||
this_fragmentation->fragment[frag_index_next].flags, this_fragmentation->fragment[frag_index_next].jitteravg);
|
||||
this_fragmentation->fragment[frag_index_next].flags);
|
||||
// this frag is lost
|
||||
this_fragmentation->fragment[frag_index_next].length = 0;
|
||||
this_fragmentation->fragment[frag_index_next].flags = 0;
|
||||
|
|
@ -2020,9 +2020,9 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
|||
{
|
||||
// This fragment is lost, It was around the buffer and it was never completed the packet.
|
||||
LOG(3, this_fragmentation->fragment[frag_index_prev].sid, this_fragmentation->fragment[frag_index_prev].tid,
|
||||
"MPPP: (PREV) seq_num:%d frag_index:%d flags:%d jitteravg:%d is LOST\n",
|
||||
"MPPP: (PREV) seq_num:%d frag_index:%d flags:%02X is LOST\n",
|
||||
this_fragmentation->fragment[frag_index_prev].seq, frag_index_prev,
|
||||
this_fragmentation->fragment[frag_index_prev].flags, this_fragmentation->fragment[frag_index_prev].jitteravg);
|
||||
this_fragmentation->fragment[frag_index_prev].flags);
|
||||
|
||||
this_fragmentation->fragment[frag_index_prev].length = 0;
|
||||
this_fragmentation->fragment[frag_index_prev].flags = 0;
|
||||
|
|
@ -2066,9 +2066,9 @@ find_frame:
|
|||
{
|
||||
// This fragment is lost, it was never completed the packet.
|
||||
LOG(3, this_fragmentation->fragment[end_index].sid, this_fragmentation->fragment[end_index].tid,
|
||||
"MPPP: (FIND END) seq_num:%d frag_index:%d flags:%d jitteravg:%d is LOST\n",
|
||||
"MPPP: (FIND END) seq_num:%d frag_index:%d flags:%02X is LOST\n",
|
||||
this_fragmentation->fragment[end_index].seq, begin_index,
|
||||
this_fragmentation->fragment[end_index].flags, this_fragmentation->fragment[end_index].jitteravg);
|
||||
this_fragmentation->fragment[end_index].flags);
|
||||
// this frag is lost
|
||||
this_fragmentation->fragment[end_index].length = 0;
|
||||
this_fragmentation->fragment[end_index].flags = 0;
|
||||
|
|
@ -2097,9 +2097,9 @@ find_frame:
|
|||
{
|
||||
// This fragment is lost, it was never completed the packet.
|
||||
LOG(3, this_fragmentation->fragment[begin_index].sid, this_fragmentation->fragment[begin_index].tid,
|
||||
"MPPP: (FIND BEGIN) seq_num:%d frag_index:%d flags:%d jitteravg:%d is LOST\n",
|
||||
"MPPP: (FIND BEGIN) seq_num:%d frag_index:%d flags:%02X is LOST\n",
|
||||
this_fragmentation->fragment[begin_index].seq, begin_index,
|
||||
this_fragmentation->fragment[begin_index].flags, this_fragmentation->fragment[begin_index].jitteravg);
|
||||
this_fragmentation->fragment[begin_index].flags);
|
||||
// this frag is lost
|
||||
this_fragmentation->fragment[begin_index].length = 0;
|
||||
this_fragmentation->fragment[begin_index].flags = 0;
|
||||
|
|
@ -2117,6 +2117,10 @@ assembling_frame:
|
|||
{
|
||||
if (!(this_fragmentation->fragment[begin_index].flags & MP_BEGIN))
|
||||
{
|
||||
LOG(3, this_fragmentation->fragment[begin_index].sid, this_fragmentation->fragment[begin_index].tid,
|
||||
"MPPP: (NOT BEGIN) seq_num:%d frag_index:%d flags:%02X\n",
|
||||
this_fragmentation->fragment[begin_index].seq, begin_index,
|
||||
this_fragmentation->fragment[begin_index].flags);
|
||||
// should occur only after an "M_Offset out of range"
|
||||
// The start sequence must be a begin sequence
|
||||
this_fragmentation->start_index = (begin_index +1) & MAXFRAGNUM_MASK;
|
||||
|
|
@ -2195,9 +2199,9 @@ assembling_frame:
|
|||
(this_fragmentation->fragment[begin_index].seq != this_fragmentation->start_seq))
|
||||
{
|
||||
LOG(3, this_fragmentation->fragment[begin_index].sid, this_fragmentation->fragment[begin_index].tid,
|
||||
"MPPP: (START) seq_num:%d frag_index:%d flags:%d jitteravg:%d is LOST\n",
|
||||
"MPPP: (START) seq_num:%d frag_index:%d flags:%02X is LOST\n",
|
||||
this_fragmentation->fragment[begin_index].seq, begin_index,
|
||||
this_fragmentation->fragment[begin_index].flags, this_fragmentation->fragment[begin_index].jitteravg);
|
||||
this_fragmentation->fragment[begin_index].flags);
|
||||
this_fragmentation->fragment[begin_index].length = 0;
|
||||
this_fragmentation->fragment[begin_index].flags = 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue