Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
702f477
gh-129288: Add optional bdaddr_type in BTPROTO_L2CAP socket address t…
themadinventor Jan 25, 2025
d45523c
gh-129288: Expose socket.BDADDR_BREDR, socket.BDADDR_LE_PUBLIC, socke…
themadinventor Jan 25, 2025
e9b2a54
gh-129288: Add optional CID field in BTPROTO_L2CAP socket address tuple
themadinventor Jan 26, 2025
117ccd4
📜🤖 Added by blurb_it.
blurb-it[bot] Jan 26, 2025
4c123f6
gh-129288: Fix NEWS blurb formatting
themadinventor Jan 26, 2025
4259dca
Merge branch 'main' into gh-129288
themadinventor Jan 27, 2025
d771afb
gh-129288: Update docs for socket to include new BTPROTO_L2CAP addres…
themadinventor Feb 23, 2025
508ef7d
Merge branch 'main' into gh-129288
themadinventor Feb 23, 2025
60abd6e
gh-129288: Improve docs for socket on BTPROTO_L2CAP, BDADDR_BREDR et al
themadinventor Feb 25, 2025
2c537ba
gh-129288: Move BDADDR_BREDR et al macros to use BTPROTO_L2CAP guard
themadinventor Feb 25, 2025
fe0b993
Expand the docs & provide link targets for the constants
encukou Feb 25, 2025
b25005e
gh-129288: Update comment re discarding cid for BR/EDR L2CAP socket
themadinventor Feb 25, 2025
05de5ee
Merge pull request #1 from encukou/gh-129288
themadinventor Feb 25, 2025
8532c5b
gh-129288: Add tests for BTPROTO_L2CAP socket
themadinventor Feb 25, 2025
1af3e88
gh-129288: Add HAVE_SOCKET_BLUETOOTH_L2CAP to socket tests
themadinventor Feb 26, 2025
5a1eaa3
gh-129288 Revert skip criteria for testCreateL2capSocket
themadinventor Feb 26, 2025
38e32a7
Update Doc/library/socket.rst
encukou Feb 27, 2025
b731ae7
Never commit from GitHub UI, right?
encukou Feb 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add optional ``l2_cid`` and ``l2_bdaddr_type`` fields to :mod:`socket` ``BTPROTO_L2CAP`` sockaddr tuple.
27 changes: 22 additions & 5 deletions Modules/socketmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1493,9 +1493,18 @@ makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto)
PyObject *addrobj = makebdaddr(&_BT_L2_MEMB(a, bdaddr));
PyObject *ret = NULL;
if (addrobj) {
ret = Py_BuildValue("Oi",
addrobj,
_BT_L2_MEMB(a, psm));
/* Retain old format for non-LE address */
if (_BT_L2_MEMB(a, bdaddr_type) == BDADDR_BREDR) {
ret = Py_BuildValue("Oi",
addrobj,
_BT_L2_MEMB(a, psm));
} else {
ret = Py_BuildValue("OiiB",
addrobj,
_BT_L2_MEMB(a, psm),
_BT_L2_MEMB(a, cid),
_BT_L2_MEMB(a, bdaddr_type));
}
Py_DECREF(addrobj);
}
return ret;
Expand Down Expand Up @@ -2045,8 +2054,11 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
struct sockaddr_l2 *addr = &addrbuf->bt_l2;
memset(addr, 0, sizeof(struct sockaddr_l2));
_BT_L2_MEMB(addr, family) = AF_BLUETOOTH;
if (!PyArg_ParseTuple(args, "si", &straddr,
&_BT_L2_MEMB(addr, psm))) {
_BT_L2_MEMB(addr, bdaddr_type) = BDADDR_BREDR;
if (!PyArg_ParseTuple(args, "si|iB", &straddr,
&_BT_L2_MEMB(addr, psm),
&_BT_L2_MEMB(addr, cid),
&_BT_L2_MEMB(addr, bdaddr_type))) {
PyErr_Format(PyExc_OSError,
"%s(): wrong format", caller);
return 0;
Expand Down Expand Up @@ -7740,6 +7752,11 @@ socket_exec(PyObject *m)
#endif /* BTPROTO_RFCOMM */
ADD_STR_CONST(m, "BDADDR_ANY", "00:00:00:00:00:00");
ADD_STR_CONST(m, "BDADDR_LOCAL", "00:00:00:FF:FF:FF");
#ifdef BDADDR_BREDR
ADD_INT_MACRO(m, BDADDR_BREDR);
ADD_INT_MACRO(m, BDADDR_LE_PUBLIC);
ADD_INT_MACRO(m, BDADDR_LE_RANDOM);
#endif /* BDADDR_BREDR */
#ifdef BTPROTO_SCO
ADD_INT_MACRO(m, BTPROTO_SCO);
#endif /* BTPROTO_SCO */
Expand Down
Loading