Update debian/changelog

This commit is contained in:
fendo 2013-02-10 23:43:53 +01:00
parent b85ea86670
commit f5354e1754
3 changed files with 46 additions and 36 deletions

6
debian/changelog vendored
View file

@ -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).

View file

@ -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
View file

@ -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;
} }