Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Sergey Korolew                       2:6053/1.2     21 Jan 2004  14:06:18
 To : All
 Subject : mpd (ng_pptpgre) патч
 -------------------------------------------------------------------------------- 
 
 
 Пропатчить файлы в /usr/src/sys/netgraph
 cd /usr/src/sys/modules/netgraph/pptpgre
 make
 остановить mpd
 kldunload ng_pptpgre
 make install
 
 !!!! Добавить в конфигурацию set pptp disable delayed-ack
 Это - выключатель, убрав его можно вернуть старое поведение.
 Также можно выключать адаптацию только для конкретных проблемных линков.
 Увы, просто так добавить новый конфигурационный параметр без потери
 совместимости нельзя, приходится использовать уже имеющийся.
 
 ====================================================================
 diff -u /usr/src/sys/netgraph/old/ng_pptpgre.c
 /usr/src/sys/netgraph/ng_pptpgre.c
 -+- /usr/src/sys/netgraph/old/ng_pptpgre.c  Thu Oct 10 22:27:54 2002
 +++ /usr/src/sys/netgraph/ng_pptpgre.c  Wed Jan 21 12:47:59 2004
 @@ -486,6 +486,8 @@
     /* Check if there's data */
     if (m != NULL) {
 
 +       if (priv->conf.enableDelayedAck) {
 +
         /* Is our transmit window full? */
         if ((u_int32_t)PPTP_SEQ_DIFF(priv->xmitSeq, priv->recvAck)
               >= a->xmitWin) {
 @@ -493,6 +495,7 @@
             NG_FREE_DATA(m, meta);
             return (ENOBUFS);
         }
 +       }
 
         /* Sanity check frame length */
         if (m != NULL && m->m_pkthdr.len > PPTP_MAX_PAYLOAD) {
 @@ -511,8 +514,11 @@
     /* Include sequence number if packet contains any data */
     if (m != NULL) {
         gre->hasSeq = 1;
 +
 +       if (priv->conf.enableDelayedAck) {
         a->timeSent[priv->xmitSeq - priv->recvAck]
             = ng_pptpgre_time(node);
 +       }
         priv->xmitSeq++;
         gre->data[0] = htonl(priv->xmitSeq);
     }
 @@ -522,7 +528,9 @@
         gre->hasAck = 1;
         gre->data[gre->hasSeq] = htonl(priv->recvSeq);
         priv->xmitAck = priv->recvSeq;
 -       ng_pptpgre_stop_send_ack_timer(node);
 +       if (priv->conf.enableDelayedAck) {
 +           ng_pptpgre_stop_send_ack_timer(node);
 +       }
     }
 
     /* Prepend GRE header to outgoing frame */
 @@ -554,9 +562,12 @@
     /* Deliver packet */
     NG_SEND_DATA(error, priv->lower, m, meta);
 
 +   if (priv->conf.enableDelayedAck) {
 +
     /* Start receive ACK timer if data was sent and not already running */
     if (error == 0 && gre->hasSeq && priv->xmitSeq == priv->recvAck + 1)
         ng_pptpgre_start_recv_ack_timer(node);
 +   }
     return (error);
  }
 
 @@ -651,6 +662,8 @@
             goto badAck;        /* ack already timed out */
         priv->recvAck = ack;
 
 +       if (priv->conf.enableDelayedAck) {
 +
         /* Update adaptive timeout stuff */
         sample = ng_pptpgre_time(node) - a->timeSent[index];
         diff = sample - a->rtt;
 @@ -679,6 +692,7 @@
         ng_pptpgre_stop_recv_ack_timer(node);
         if (priv->recvAck != priv->xmitSeq)
             ng_pptpgre_start_recv_ack_timer(node);
 +       }
     }
  badAck:
 
 @@ -697,6 +711,8 @@
         }
         priv->recvSeq = seq;
 
 +       if (priv->conf.enableDelayedAck) {
 +
         /* We need to acknowledge this packet; do it soon... */
         if (a->sackTimerPtr == NULL) {
             int maxWait;
 @@ -715,6 +731,8 @@
                 ng_pptpgre_start_send_ack_timer(node, maxWait);
             }
         }
 +       }
 +       else ng_pptpgre_xmit(node, NULL, NULL);
 
         /* Trim mbuf down to internal payload */
         m_adj(m, iphlen + grelen);
 Only in /usr/src/sys/netgraph: old
 ====================================================================
  Всего наилучшего,
   Sergey aka DS
 
 --- GoldED+/W32 snapshot-2001.03.04
  * Origin: Hету. Придумывать лень. (2:6053/1.2)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 mpd (ng_pptpgre) патч   Sergey Korolew   21 Jan 2004 14:06:18 
Архивное /ru.unix.bsd/2220400e50ab.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional