@@ -473,37 +473,42 @@ remove_unusable_flags(PyObject *m)
473
473
# define SOCKETCLOSE close
474
474
#endif
475
475
476
- #if (defined(HAVE_BLUETOOTH_H ) || defined(HAVE_BLUETOOTH_BLUETOOTH_H )) && !defined(__NetBSD__ ) && !defined(__DragonFly__ )
477
- #define USE_BLUETOOTH 1
478
- #if defined(__FreeBSD__ )
479
- #define BTPROTO_L2CAP BLUETOOTH_PROTO_L2CAP
480
- #define BTPROTO_RFCOMM BLUETOOTH_PROTO_RFCOMM
481
- #define BTPROTO_HCI BLUETOOTH_PROTO_HCI
482
- #define SOL_HCI SOL_HCI_RAW
483
- #define HCI_FILTER SO_HCI_RAW_FILTER
484
- #define sockaddr_l2 sockaddr_l2cap
485
- #define sockaddr_rc sockaddr_rfcomm
486
- #define hci_dev hci_node
487
- #define _BT_L2_MEMB (sa , memb ) ((sa)->l2cap_##memb)
488
- #define _BT_RC_MEMB (sa , memb ) ((sa)->rfcomm_##memb)
489
- #define _BT_HCI_MEMB (sa , memb ) ((sa)->hci_##memb)
490
- #elif defined(__NetBSD__ ) || defined(__DragonFly__ )
491
- #define sockaddr_l2 sockaddr_bt
492
- #define sockaddr_rc sockaddr_bt
493
- #define sockaddr_hci sockaddr_bt
494
- #define sockaddr_sco sockaddr_bt
495
- #define SOL_HCI BTPROTO_HCI
496
- #define HCI_DATA_DIR SO_HCI_DIRECTION
497
- #define _BT_L2_MEMB (sa , memb ) ((sa)->bt_##memb)
498
- #define _BT_RC_MEMB (sa , memb ) ((sa)->bt_##memb)
499
- #define _BT_HCI_MEMB (sa , memb ) ((sa)->bt_##memb)
500
- #define _BT_SCO_MEMB (sa , memb ) ((sa)->bt_##memb)
501
- #else
502
- #define _BT_L2_MEMB (sa , memb ) ((sa)->l2_##memb)
503
- #define _BT_RC_MEMB (sa , memb ) ((sa)->rc_##memb)
504
- #define _BT_HCI_MEMB (sa , memb ) ((sa)->hci_##memb)
505
- #define _BT_SCO_MEMB (sa , memb ) ((sa)->sco_##memb)
506
- #endif
476
+ #if defined(HAVE_BLUETOOTH_H ) || defined(HAVE_BLUETOOTH_BLUETOOTH_H )
477
+ # define USE_BLUETOOTH 1
478
+ # if defined(HAVE_BLUETOOTH_BLUETOOTH_H ) // Linux
479
+ # define _BT_L2_MEMB (sa , memb ) ((sa)->l2_##memb)
480
+ # define _BT_RC_MEMB (sa , memb ) ((sa)->rc_##memb)
481
+ # define _BT_HCI_MEMB (sa , memb ) ((sa)->hci_##memb)
482
+ # define _BT_SCO_MEMB (sa , memb ) ((sa)->sco_##memb)
483
+ # elif defined(__FreeBSD__ )
484
+ # define BTPROTO_L2CAP BLUETOOTH_PROTO_L2CAP
485
+ # define BTPROTO_RFCOMM BLUETOOTH_PROTO_RFCOMM
486
+ # define BTPROTO_HCI BLUETOOTH_PROTO_HCI
487
+ # define SOL_HCI SOL_HCI_RAW
488
+ # define HCI_FILTER SO_HCI_RAW_FILTER
489
+ # define sockaddr_l2 sockaddr_l2cap
490
+ # define sockaddr_rc sockaddr_rfcomm
491
+ # define hci_dev hci_node
492
+ # define _BT_L2_MEMB (sa , memb ) ((sa)->l2cap_##memb)
493
+ # define _BT_RC_MEMB (sa , memb ) ((sa)->rfcomm_##memb)
494
+ # define _BT_HCI_MEMB (sa , memb ) ((sa)->hci_##memb)
495
+ # else // NetBSD, DragonFly BSD
496
+ # define sockaddr_l2 sockaddr_bt
497
+ # define sockaddr_rc sockaddr_bt
498
+ # define sockaddr_hci sockaddr_bt
499
+ # define sockaddr_sco sockaddr_bt
500
+ # define bt_l2 bt
501
+ # define bt_rc bt
502
+ # define bt_sco bt
503
+ # define bt_hci bt
504
+ # define bt_cid bt_channel
505
+ # define SOL_HCI BTPROTO_HCI
506
+ # define HCI_DATA_DIR SO_HCI_DIRECTION
507
+ # define _BT_L2_MEMB (sa , memb ) ((sa)->bt_##memb)
508
+ # define _BT_RC_MEMB (sa , memb ) ((sa)->bt_##memb)
509
+ # define _BT_HCI_MEMB (sa , memb ) ((sa)->bt_##memb)
510
+ # define _BT_SCO_MEMB (sa , memb ) ((sa)->bt_##memb)
511
+ # endif
507
512
#endif
508
513
509
514
#ifdef MS_WINDOWS_DESKTOP
@@ -1483,16 +1488,16 @@ makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto)
1483
1488
case BTPROTO_HCI :
1484
1489
{
1485
1490
struct sockaddr_hci * a = (struct sockaddr_hci * ) addr ;
1486
- #if defined(__NetBSD__ ) || defined(__DragonFly__ )
1487
- return makebdaddr (& _BT_HCI_MEMB (a , bdaddr ));
1491
+ #if defined(HAVE_BLUETOOTH_BLUETOOTH_H )
1492
+ PyObject * ret = NULL ;
1493
+ ret = Py_BuildValue ("i" , _BT_HCI_MEMB (a , dev ));
1494
+ return ret ;
1488
1495
#elif defined(__FreeBSD__ )
1489
- char * node = _BT_HCI_MEMB (a , node );
1496
+ const char * node = _BT_HCI_MEMB (a , node );
1490
1497
size_t len = strnlen (node , sizeof (_BT_HCI_MEMB (a , node )));
1491
1498
return PyBytes_FromStringAndSize (node , (Py_ssize_t )len );
1492
1499
#else
1493
- PyObject * ret = NULL ;
1494
- ret = Py_BuildValue ("i" , _BT_HCI_MEMB (a , dev ));
1495
- return ret ;
1500
+ return makebdaddr (& _BT_HCI_MEMB (a , bdaddr ));
1496
1501
#endif
1497
1502
}
1498
1503
@@ -2061,19 +2066,16 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2061
2066
{
2062
2067
struct sockaddr_hci * addr = & addrbuf -> bt_hci ;
2063
2068
memset (addr , 0 , sizeof (struct sockaddr_hci ));
2064
- #if defined(__NetBSD__ ) || defined(__DragonFly__ )
2065
- const char * straddr ;
2066
2069
_BT_HCI_MEMB (addr , family ) = AF_BLUETOOTH ;
2067
- if (!PyBytes_Check (args )) {
2068
- PyErr_Format (PyExc_OSError , "%s: "
2069
- "wrong format" , caller );
2070
+ #if defined(HAVE_BLUETOOTH_BLUETOOTH_H )
2071
+ unsigned short dev = _BT_HCI_MEMB (addr , dev );
2072
+ if (!PyArg_ParseTuple (args , "H" , & dev )) {
2073
+ PyErr_Format (PyExc_OSError ,
2074
+ "%s(): wrong format" , caller );
2070
2075
return 0 ;
2071
2076
}
2072
- straddr = PyBytes_AS_STRING (args );
2073
- if (setbdaddr (straddr , & _BT_HCI_MEMB (addr , bdaddr )) < 0 )
2074
- return 0 ;
2077
+ _BT_HCI_MEMB (addr , dev ) = dev ;
2075
2078
#elif defined(__FreeBSD__ )
2076
- _BT_HCI_MEMB (addr , family ) = AF_BLUETOOTH ;
2077
2079
if (!PyBytes_Check (args )) {
2078
2080
PyErr_Format (PyExc_OSError , "%s: "
2079
2081
"wrong node format" , caller );
@@ -2094,14 +2096,15 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2094
2096
strncpy (_BT_HCI_MEMB (addr , node ), straddr ,
2095
2097
sizeof (_BT_HCI_MEMB (addr , node )));
2096
2098
#else
2097
- _BT_HCI_MEMB (addr , family ) = AF_BLUETOOTH ;
2098
- unsigned short dev = _BT_HCI_MEMB (addr , dev );
2099
- if (!PyArg_ParseTuple (args , "H" , & dev )) {
2100
- PyErr_Format (PyExc_OSError ,
2101
- "%s(): wrong format" , caller );
2099
+ const char * straddr ;
2100
+ if (!PyBytes_Check (args )) {
2101
+ PyErr_Format (PyExc_OSError , "%s: "
2102
+ "wrong format" , caller );
2102
2103
return 0 ;
2103
2104
}
2104
- _BT_HCI_MEMB (addr , dev ) = dev ;
2105
+ straddr = PyBytes_AS_STRING (args );
2106
+ if (setbdaddr (straddr , & _BT_HCI_MEMB (addr , bdaddr )) < 0 )
2107
+ return 0 ;
2105
2108
#endif
2106
2109
* len_ret = sizeof * addr ;
2107
2110
return 1 ;
@@ -2679,12 +2682,12 @@ getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret)
2679
2682
case BTPROTO_HCI :
2680
2683
* len_ret = sizeof (struct sockaddr_hci );
2681
2684
return 1 ;
2682
- #if !defined(__FreeBSD__ )
2685
+ #endif /* BTPROTO_HCI */
2686
+ #ifdef BTPROTO_SCO
2683
2687
case BTPROTO_SCO :
2684
2688
* len_ret = sizeof (struct sockaddr_sco );
2685
2689
return 1 ;
2686
- #endif /* !__FreeBSD__ */
2687
- #endif /* BTPROTO_HCI */
2690
+ #endif /* BTPROTO_SCO */
2688
2691
default :
2689
2692
PyErr_SetString (PyExc_OSError , "getsockaddrlen: "
2690
2693
"unknown BT protocol" );
@@ -7724,13 +7727,13 @@ socket_exec(PyObject *m)
7724
7727
#ifdef BTPROTO_HCI
7725
7728
ADD_INT_MACRO (m , BTPROTO_HCI );
7726
7729
ADD_INT_MACRO (m , SOL_HCI );
7727
- #if ! defined(__NetBSD__ ) && !defined( __DragonFly__ )
7730
+ #if defined(HCI_FILTER )
7728
7731
ADD_INT_MACRO (m , HCI_FILTER );
7729
- #if !defined(__FreeBSD__ )
7732
+ #endif
7733
+ #if defined(HCI_TIME_STAMP )
7730
7734
ADD_INT_MACRO (m , HCI_TIME_STAMP );
7731
7735
ADD_INT_MACRO (m , HCI_DATA_DIR );
7732
- #endif /* !__FreeBSD__ */
7733
- #endif /* !__NetBSD__ && !__DragonFly__ */
7736
+ #endif
7734
7737
#endif /* BTPROTO_HCI */
7735
7738
#ifdef BTPROTO_RFCOMM
7736
7739
ADD_INT_MACRO (m , BTPROTO_RFCOMM );
0 commit comments