Skip to content
Snippets Groups Projects
  • Leonardo Bras's avatar
    5258a7e2
    QIOChannelSocket: Add support for MSG_ZEROCOPY + IPV6 · 5258a7e2
    Leonardo Bras authored
    
    For using MSG_ZEROCOPY, there are two steps:
    1 - io_writev() the packet, which enqueues the packet for sending, and
    2 - io_flush(), which gets confirmation that all packets got correctly sent
    
    Currently, if MSG_ZEROCOPY is used to send packets over IPV6, no error will
    be reported in (1), but it will fail in the first time (2) happens.
    
    This happens because (2) currently checks for cmsg_level & cmsg_type
    associated with IPV4 only, before reporting any error.
    
    Add checks for cmsg_level & cmsg_type associated with IPV6, and thus enable
    support for MSG_ZEROCOPY + IPV6
    
    Fixes: 2bc58ffc ("QIOChannelSocket: Implement io_writev zero copy flag & io_flush for CONFIG_LINUX")
    Signed-off-by: default avatarLeonardo Bras <leobras@redhat.com>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
    5258a7e2
    History
    QIOChannelSocket: Add support for MSG_ZEROCOPY + IPV6
    Leonardo Bras authored
    
    For using MSG_ZEROCOPY, there are two steps:
    1 - io_writev() the packet, which enqueues the packet for sending, and
    2 - io_flush(), which gets confirmation that all packets got correctly sent
    
    Currently, if MSG_ZEROCOPY is used to send packets over IPV6, no error will
    be reported in (1), but it will fail in the first time (2) happens.
    
    This happens because (2) currently checks for cmsg_level & cmsg_type
    associated with IPV4 only, before reporting any error.
    
    Add checks for cmsg_level & cmsg_type associated with IPV6, and thus enable
    support for MSG_ZEROCOPY + IPV6
    
    Fixes: 2bc58ffc ("QIOChannelSocket: Implement io_writev zero copy flag & io_flush for CONFIG_LINUX")
    Signed-off-by: default avatarLeonardo Bras <leobras@redhat.com>
    Signed-off-by: default avatarDaniel P. Berrangé <berrange@redhat.com>