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
|
l2tpns (2.2.1-2fdn3.4) unstable; urgency=low
|
||||||
|
|
||||||
* Add parameter to disable the send of the L2TP HELLO message (Apple compatibility).
|
* 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 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)
|
#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
|
// 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
|
// Constants
|
||||||
#ifndef ETCDIR
|
#ifndef ETCDIR
|
||||||
|
|
@ -356,9 +356,9 @@ bundlet;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
fragmentt fragment[MAXFRAGNUM];
|
fragmentt fragment[MAXFRAGNUM];
|
||||||
uint8_t reassembled_frame[MAXETHER]; // The reassembled frame
|
uint8_t reassembled_frame[MAXETHER]; // The reassembled frame
|
||||||
uint16_t re_frame_len; // The reassembled frame length
|
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 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
|
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
|
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()
|
static bundleidt new_bundle()
|
||||||
{
|
{
|
||||||
bundleidt i;
|
bundleidt i;
|
||||||
for (i = 1; i < MAXBUNDLE; i++)
|
for (i = 1; i < MAXBUNDLE; i++)
|
||||||
{
|
{
|
||||||
if (bundle[i].state == BUNDLEFREE)
|
if (bundle[i].state == BUNDLEFREE)
|
||||||
{
|
{
|
||||||
LOG(4, 0, 0, "MPPP: Assigning bundle ID %d\n", i);
|
LOG(4, 0, 0, "MPPP: Assigning bundle ID %d\n", i);
|
||||||
bundle[i].num_of_links = 1;
|
bundle[i].num_of_links = 1;
|
||||||
bundle[i].last_check = time_now; // Initialize last_check value
|
bundle[i].last_check = time_now; // Initialize last_check value
|
||||||
bundle[i].state = BUNDLEOPEN;
|
bundle[i].state = BUNDLEOPEN;
|
||||||
bundle[i].current_ses = -1; // This is to enforce the first session 0 to be used at first
|
bundle[i].current_ses = -1; // This is to enforce the first session 0 to be used at first
|
||||||
memset(&frag[i], 0, sizeof(fragmentationt));
|
memset(&frag[i], 0, sizeof(fragmentationt));
|
||||||
if (i > config->cluster_highest_bundleid)
|
if (i > config->cluster_highest_bundleid)
|
||||||
config->cluster_highest_bundleid = i;
|
config->cluster_highest_bundleid = i;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOG(0, 0, 0, "MPPP: Can't find a free bundle! There shouldn't be this many in use!\n");
|
LOG(0, 0, 0, "MPPP: Can't find a free bundle! There shouldn't be this many in use!\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipcp_open(sessionidt s, tunnelidt t)
|
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 !!!!!!!!
|
// There have a long break of the link !!!!!!!!
|
||||||
// M_offset is bigger that the fragmentation buffer size
|
// 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
|
// Calculate the new start index, the previous frag are lost
|
||||||
begin_index = (M_offset + this_fragmentation->start_index) & MAXFRAGNUM_MASK;
|
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)
|
if (frag_offset < 0)
|
||||||
{
|
{
|
||||||
// this packet comes before the next
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1959,7 +1959,7 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
||||||
if (frag_offset >= MAXFRAGNUM)
|
if (frag_offset >= MAXFRAGNUM)
|
||||||
{
|
{
|
||||||
// frag_offset is bigger that the fragmentation buffer size
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1971,8 +1971,8 @@ void processmpin(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l)
|
||||||
|
|
||||||
if (this_frag->length > 0)
|
if (this_frag->length > 0)
|
||||||
// This fragment is lost, It was around the buffer and it was never completed the packet.
|
// 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",
|
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->jitteravg);
|
this_frag->seq, frag_index, this_frag->flags);
|
||||||
|
|
||||||
this_frag->length = l;
|
this_frag->length = l;
|
||||||
this_frag->sid = s;
|
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.
|
// 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,
|
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].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 frag is lost
|
||||||
this_fragmentation->fragment[frag_index_next].length = 0;
|
this_fragmentation->fragment[frag_index_next].length = 0;
|
||||||
this_fragmentation->fragment[frag_index_next].flags = 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.
|
// 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,
|
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].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].length = 0;
|
||||||
this_fragmentation->fragment[frag_index_prev].flags = 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.
|
// This fragment is lost, it was never completed the packet.
|
||||||
LOG(3, this_fragmentation->fragment[end_index].sid, this_fragmentation->fragment[end_index].tid,
|
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].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 frag is lost
|
||||||
this_fragmentation->fragment[end_index].length = 0;
|
this_fragmentation->fragment[end_index].length = 0;
|
||||||
this_fragmentation->fragment[end_index].flags = 0;
|
this_fragmentation->fragment[end_index].flags = 0;
|
||||||
|
|
@ -2097,9 +2097,9 @@ find_frame:
|
||||||
{
|
{
|
||||||
// This fragment is lost, it was never completed the packet.
|
// This fragment is lost, it was never completed the packet.
|
||||||
LOG(3, this_fragmentation->fragment[begin_index].sid, this_fragmentation->fragment[begin_index].tid,
|
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].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 frag is lost
|
||||||
this_fragmentation->fragment[begin_index].length = 0;
|
this_fragmentation->fragment[begin_index].length = 0;
|
||||||
this_fragmentation->fragment[begin_index].flags = 0;
|
this_fragmentation->fragment[begin_index].flags = 0;
|
||||||
|
|
@ -2117,6 +2117,10 @@ assembling_frame:
|
||||||
{
|
{
|
||||||
if (!(this_fragmentation->fragment[begin_index].flags & MP_BEGIN))
|
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"
|
// should occur only after an "M_Offset out of range"
|
||||||
// The start sequence must be a begin sequence
|
// The start sequence must be a begin sequence
|
||||||
this_fragmentation->start_index = (begin_index +1) & MAXFRAGNUM_MASK;
|
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))
|
(this_fragmentation->fragment[begin_index].seq != this_fragmentation->start_seq))
|
||||||
{
|
{
|
||||||
LOG(3, this_fragmentation->fragment[begin_index].sid, this_fragmentation->fragment[begin_index].tid,
|
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].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].length = 0;
|
||||||
this_fragmentation->fragment[begin_index].flags = 0;
|
this_fragmentation->fragment[begin_index].flags = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue