1. 27 8月, 2010 1 次提交
  2. 17 6月, 2010 1 次提交
  3. 18 5月, 2010 1 次提交
  4. 01 5月, 2010 4 次提交
  5. 29 4月, 2010 1 次提交
  6. 24 11月, 2009 5 次提交
  7. 14 11月, 2009 1 次提交
    • V
      sctp: Set source addresses on the association before adding transports · 409b95af
      Vlad Yasevich 提交于
      Recent commit 8da645e1
      	sctp: Get rid of an extra routing lookup when adding a transport
      introduced a regression in the connection setup.  The behavior was
      
      different between IPv4 and IPv6.  IPv4 case ended up working because the
      route lookup routing returned a NULL route, which triggered another
      route lookup later in the output patch that succeeded.  In the IPv6 case,
      a valid route was returned for first call, but we could not find a valid
      source address at the time since the source addresses were not set on the
      association yet.  Thus resulted in a hung connection.
      
      The solution is to set the source addresses on the association prior to
      adding peers.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      409b95af
  8. 05 9月, 2009 5 次提交
    • V
      sctp: Get rid of an extra routing lookup when adding a transport. · 8da645e1
      Vlad Yasevich 提交于
      We used to perform 2 routing lookups for a new transport: one
      just for path mtu detection, and one to actually route to destination
      and path mtu update when sending a packet.  There is no point in doing
      both of them, especially since the first one just for path mtu doesn't
      take into account source address and sometimes gives the wrong route,
      causing path mtu updates anyway.
      
      We now do just the one call to do both route to destination and get
      path mtu updates.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      8da645e1
    • V
      sctp: Failover transmitted list on transport delete · 31b02e15
      Vlad Yasevich 提交于
      Add-IP feature allows users to delete an active transport.  If that
      transport has chunks in flight, those chunks need to be moved to another
      transport or association may get into unrecoverable state.
      Reported-by: NRafael Laufer <rlaufer@cisco.com>
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      31b02e15
    • V
      sctp: Fix SCTP_MAXSEG socket option to comply to spec. · f68b2e05
      Vlad Yasevich 提交于
      We had a bug that we never stored the user-defined value for
      MAXSEG when setting the value on an association.  Thus future
      PMTU events ended up re-writing the frag point and increasing
      it past user limit.  Additionally, when setting the option on
      the socket/endpoint, we effect all current associations, which
      is against spec.
      
      Now, we store the user 'maxseg' value along with the computed
      'frag_point'.  We inherit 'maxseg' from the socket at association
      creation and use it as an upper limit for 'frag_point' when its
      set.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      f68b2e05
    • V
      sctp: drop a_rwnd to 0 when receive buffer overflows. · 4d3c46e6
      Vlad Yasevich 提交于
      SCTP has a problem that when small chunks are used, it is possible
      to exhaust the receiver buffer without fully closing receive window.
      This happens due to all overhead that we have account for with small
      messages.  To fix this, when receive buffer is exceeded, we'll drop
      the window to 0 and save the 'drop' portion.  When application starts
      reading data and freeing up recevie buffer space, we'll wait until
      we've reached the 'drop' window and then add back this 'drop' one
      mtu at a time.  This worked well in testing and under stress produced
      rather even recovery.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      4d3c46e6
    • V
      sctp: release cached route when the transport goes down. · 40187886
      Vlad Yasevich 提交于
      When the sctp transport is marked down, we can release the
      cached route and force a new lookup when attempting to use
      this transport for anything.  This way, if a better route
      or source address is available, we'll try to use it.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      40187886
  9. 03 6月, 2009 5 次提交
  10. 09 10月, 2008 1 次提交
    • V
      sctp: Rework the tsn map to use generic bitmap. · 8e1ee18c
      Vlad Yasevich 提交于
      The tsn map currently use is 4K large and is stuck inside
      the sctp_association structure making memory references REALLY
      expensive.  What we really need is at most 4K worth of bits
      so the biggest map we would have is 512 bytes.   Also, the
      map is only really usefull when we have gaps to store and
      report.  As such, starting with minimal map of say 32 TSNs (bits)
      should be enough for normal low-loss operations.  We can grow
      the map by some multiple of 32 along with some extra room any
      time we receive the TSN which would put us outside of the map
      boundry.  As we close gaps, we can shift the map to rebase
      it on the latest TSN we've seen.  This saves 4088 bytes per
      association just in the map alone along savings from the now
      unnecessary structure members.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8e1ee18c
  11. 19 9月, 2008 1 次提交
    • V
      sctp: Fix oops when INIT-ACK indicates that peer doesn't support AUTH · add52379
      Vlad Yasevich 提交于
      If INIT-ACK is received with SupportedExtensions parameter which
      indicates that the peer does not support AUTH, the packet will be
      silently ignore, and sctp_process_init() do cleanup all of the
      transports in the association.
      When T1-Init timer is expires, OOPS happen while we try to choose
      a different init transport.
      
      The solution is to only clean up the non-active transports, i.e
      the ones that the peer added.  However, that introduces a problem
      with sctp_connectx(), because we don't mark the proper state for
      the transports provided by the user.  So, we'll simply mark
      user-provided transports as ACTIVE.  That will allow INIT
      retransmissions to work properly in the sctp_connectx() context
      and prevent the crash.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      add52379
  12. 26 7月, 2008 1 次提交
  13. 19 7月, 2008 1 次提交
    • F
      sctp: Prevent uninitialized memory access · 6d0ccbac
      Florian Westphal 提交于
      valgrind reports uninizialized memory accesses when running
      sctp inside the network simulation cradle simulator:
      
       Conditional jump or move depends on uninitialised value(s)
          at 0x570E34A: sctp_assoc_sync_pmtu (associola.c:1324)
          by 0x57427DA: sctp_packet_transmit (output.c:403)
          by 0x5710EFF: sctp_outq_flush (outqueue.c:824)
          by 0x5710B88: sctp_outq_uncork (outqueue.c:701)
          by 0x5745262: sctp_cmd_interpreter (sm_sideeffect.c:1548)
          by 0x57444B7: sctp_side_effects (sm_sideeffect.c:976)
          by 0x5744460: sctp_do_sm (sm_sideeffect.c:945)
          by 0x572157D: sctp_primitive_ASSOCIATE (primitive.c:94)
          by 0x5725C04: __sctp_connect (socket.c:1094)
          by 0x57297DC: sctp_connect (socket.c:3297)
      
       Conditional jump or move depends on uninitialised value(s)
          at 0x575D3A5: mod_timer (timer.c:630)
          by 0x5752B78: sctp_cmd_hb_timers_start (sm_sideeffect.c:555)
          by 0x5754133: sctp_cmd_interpreter (sm_sideeffect.c:1448)
          by 0x5753607: sctp_side_effects (sm_sideeffect.c:976)
          by 0x57535B0: sctp_do_sm (sm_sideeffect.c:945)
          by 0x571E9AE: sctp_endpoint_bh_rcv (endpointola.c:474)
          by 0x573347F: sctp_inq_push (inqueue.c:104)
          by 0x572EF93: sctp_rcv (input.c:256)
          by 0x5689623: ip_local_deliver_finish (ip_input.c:230)
          by 0x5689759: ip_local_deliver (ip_input.c:268)
          by 0x5689CAC: ip_rcv_finish (dst.h:246)
      
      #1 is due to "if (t->pmtu_pending)".
      8a479491 "[SCTP] Flag a pmtu change request"
      suggests it should be initialized to 0.
      
      #2 is the heartbeat timer 'expires' value, which is uninizialised, but
      test by mod_timer().
      T3_rtx_timer seems to be affected by the same problem, so initialize it, too.
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6d0ccbac
  14. 21 6月, 2008 1 次提交
  15. 20 6月, 2008 1 次提交
    • V
      sctp: Follow security requirement of responding with 1 packet · 2e3216cd
      Vlad Yasevich 提交于
      RFC 4960, Section 11.4. Protection of Non-SCTP-Capable Hosts
      
      When an SCTP stack receives a packet containing multiple control or
      DATA chunks and the processing of the packet requires the sending of
      multiple chunks in response, the sender of the response chunk(s) MUST
      NOT send more than one packet.  If bundling is supported, multiple
      response chunks that fit into a single packet MAY be bundled together
      into one single response packet.  If bundling is not supported, then
      the sender MUST NOT send more than one response chunk and MUST
      discard all other responses.  Note that this rule does NOT apply to a
      SACK chunk, since a SACK chunk is, in itself, a response to DATA and
      a SACK does not require a response of more DATA.
      
      We implement this by not servicing our outqueue until we reach the end
      of the packet.  This enables maximum bundling.  We also identify
      'response' chunks and make sure that we only send 1 packet when sending
      such chunks.
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2e3216cd
  16. 17 6月, 2008 1 次提交
  17. 05 6月, 2008 1 次提交
  18. 10 5月, 2008 1 次提交
  19. 13 4月, 2008 1 次提交
  20. 06 3月, 2008 1 次提交
  21. 07 2月, 2008 1 次提交
    • W
      [SCTP]: Fix kernel panic while received ASCONF chunk with bad serial number · a8699814
      Wei Yongjun 提交于
      While recevied ASCONF chunk with serial number less then needed, kernel
      will treat this chunk as a retransmitted ASCONF chunk and find cached
      ASCONF-ACK chunk used sctp_assoc_lookup_asconf_ack(). But this function
      will always return NO-NULL. So response with cached ASCONF-ACKs chunk
      will cause kernel panic.
      In function sctp_assoc_lookup_asconf_ack(), if the cached ASCONF-ACKs
      list asconf_ack_list is empty, or if the serial being requested does not
      exists, the function as it currectly stands returns the actuall
      list_head asoc->asconf_ack_list, this is not a cache ASCONF-ACK chunk
      but a bogus pointer.
      Signed-off-by: NWei Yongjun <yjwei@cn.fujitsu.com>
      Signed-off-by: NVlad Yasevich <vladislav.yasevich@hp.com>
      a8699814
  22. 05 2月, 2008 1 次提交
  23. 29 1月, 2008 3 次提交