lkml.org 
[lkml]   [2004]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: Recent select() handling change breaks Poptop
    (adding netdev to cc:)

    Phil Oester wrote:
    > > 2. a "tcpdump -nvv" of its udp traffic (ideally captured from a seperate
    > > server, but from the server would probably be OK too)
    >
    > PPTP uses TCP 1723 and GRE (proto 47), so there is no udp traffic involved.
    > I suspect the change was made to all datagram traffic with the assumption
    > that UDP was the only protocol impacted. Perhaps GRE was not considered?

    Yeah, it looks like the problem for sure. The patch modifies the
    structure "inet_dgram_ops" to use udp_poll(), but looking farther down:

    static struct inet_protosw inetsw_array[] =
    [...]
    .type = SOCK_DGRAM,
    .protocol = IPPROTO_UDP,
    .prot = &udp_prot,
    .ops = &inet_dgram_ops,
    [...]
    .type = SOCK_RAW,
    .protocol = IPPROTO_IP, /* wild card */
    .prot = &raw_prot,
    .ops = &inet_dgram_ops,
    [...]

    so it looks like udp_poll() will end up getting used for both SOCK_DGRAM
    and SOCK_RAW inet sockets; obviously Poptop is using the latter and failing
    as a result. No need for the strace/tcpdump data I guess.

    The fix is to just make a copy of the inet_dgram_ops called inet_udp_ops
    and make the udp_poll() change only in that one (and obviously change the
    SOCK_DGRAM case there to use &inet_udp_ops). I don't have time right this
    second to spin a patch, but could you try that out and see if it fixes
    your problem.

    -Mitch
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:08    [W:0.021 / U:2.928 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site