The branch, master has been updated
       via  f5b6a5b ctdb-common: For AF_PACKET socket types, protocol is in 
network order
      from  b1b70c1 vfs: Fix the vfs_gpfs build

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f5b6a5b13406c245ab9cc8c1699483af9eb21f88
Author: Amitay Isaacs <[email protected]>
Date:   Thu Mar 3 14:17:40 2016 +1100

    ctdb-common: For AF_PACKET socket types, protocol is in network order
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11770
    
    From man page of packet(7):
    
                                                 protocol is the  IEEE  802.3
       protocol  number  in  network  byte  order.  See the <linux/if_ether.h>
       include file for a list of allowed protocols.  When protocol is set  to
       htons(ETH_P_ALL),  then all protocols are received.
    
    Protocol argument was changed from network order to host order wrongly
    in commit 9f8395cb7d49b63a82f75bf504f5f83920102b29.
    
    Specifying "protocol" field to socket(AF_PACKET, ...) call only affects
    the packets that are recevied.  So use protocol = 0 when sending raw
    packets.
    
    Signed-off-by: Amitay Isaacs <[email protected]>
    Reviewed-by: Martin Schwenke <[email protected]>
    
    Autobuild-User(master): Martin Schwenke <[email protected]>
    Autobuild-Date(master): Fri Mar  4 12:58:50 CET 2016 on sn-devel-144

-----------------------------------------------------------------------

Summary of changes:
 ctdb/common/system_linux.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/ctdb/common/system_linux.c b/ctdb/common/system_linux.c
index d523617..6d01699 100644
--- a/ctdb/common/system_linux.c
+++ b/ctdb/common/system_linux.c
@@ -100,7 +100,7 @@ int ctdb_sys_send_arp(const ctdb_sock_addr *addr, const 
char *iface)
 
        switch (addr->ip.sin_family) {
        case AF_INET:
-               s = socket(AF_PACKET, SOCK_RAW, ETHERTYPE_ARP);
+               s = socket(AF_PACKET, SOCK_RAW, 0);
                if (s == -1){
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket\n"));
                        return -1;
@@ -194,7 +194,7 @@ int ctdb_sys_send_arp(const ctdb_sock_addr *addr, const 
char *iface)
                close(s);
                break;
        case AF_INET6:
-               s = socket(AF_PACKET, SOCK_RAW, ETHERTYPE_ARP);
+               s = socket(AF_PACKET, SOCK_RAW, 0);
                if (s == -1){
                        DEBUG(DEBUG_CRIT,(__location__ " failed to open raw 
socket\n"));
                        return -1;
@@ -460,7 +460,7 @@ int ctdb_sys_open_capture_socket(const char *iface, void 
**private_data)
        int s;
 
        /* Open a socket to capture all traffic */
-       s = socket(AF_PACKET, SOCK_RAW, ETH_P_ALL);
+       s = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
        if (s == -1) {
                DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
                return -1;


-- 
Samba Shared Repository

Reply via email to