mirror of
https://github.com/samba-team/samba.git
synced 2025-03-01 04:58:35 +03:00
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 <amitay@gmail.com> Reviewed-by: Martin Schwenke <martin@meltin.net> Autobuild-User(master): Martin Schwenke <martins@samba.org> Autobuild-Date(master): Fri Mar 4 12:58:50 CET 2016 on sn-devel-144 (cherry picked from commit f5b6a5b13406c245ab9cc8c1699483af9eb21f88)
This commit is contained in:
parent
f02671a4cc
commit
e60d145588
@ -93,7 +93,7 @@ int ctdb_sys_send_arp(const ctdb_sock_addr *addr, const char *iface)
|
|||||||
|
|
||||||
switch (addr->ip.sin_family) {
|
switch (addr->ip.sin_family) {
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
s = socket(AF_PACKET, SOCK_RAW, ETHERTYPE_ARP);
|
s = socket(AF_PACKET, SOCK_RAW, 0);
|
||||||
if (s == -1){
|
if (s == -1){
|
||||||
DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
|
DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
|
||||||
return -1;
|
return -1;
|
||||||
@ -187,7 +187,7 @@ int ctdb_sys_send_arp(const ctdb_sock_addr *addr, const char *iface)
|
|||||||
close(s);
|
close(s);
|
||||||
break;
|
break;
|
||||||
case AF_INET6:
|
case AF_INET6:
|
||||||
s = socket(AF_PACKET, SOCK_RAW, ETHERTYPE_ARP);
|
s = socket(AF_PACKET, SOCK_RAW, 0);
|
||||||
if (s == -1){
|
if (s == -1){
|
||||||
DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
|
DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
|
||||||
return -1;
|
return -1;
|
||||||
@ -447,7 +447,7 @@ int ctdb_sys_open_capture_socket(const char *iface, void **private_data)
|
|||||||
int s;
|
int s;
|
||||||
|
|
||||||
/* Open a socket to capture all traffic */
|
/* 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) {
|
if (s == -1) {
|
||||||
DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
|
DEBUG(DEBUG_CRIT,(__location__ " failed to open raw socket\n"));
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user