get the default broadcast network address.

This commit is contained in:
2026-08-03 15:44:21 +02:00
parent cffedd6dbf
commit 1f9208560f
6 changed files with 71 additions and 11 deletions
+33
View File
@@ -0,0 +1,33 @@
#lang racket/base
;; Network helpers used by UPnP and SSDP.
(require racket/udp
simple-log)
(provide upnp-default-ipv4-address)
(sl-def-log upnp-network)
(define ssdp-multicast-address "239.255.255.250")
(define ssdp-multicast-port 1900)
;; Return the local IPv4 address selected by the operating system for traffic
;; to the SSDP multicast destination. No datagram is transmitted.
(define (upnp-default-ipv4-address)
(let ([socket (udp-open-socket ssdp-multicast-address
ssdp-multicast-port)])
(dynamic-wind
void
(lambda ()
(udp-connect! socket ssdp-multicast-address ssdp-multicast-port)
(define-values (local-address local-port remote-address remote-port)
(udp-addresses socket #t))
(dbg-upnp-network
"Selected UPnP IPv4 address ~a for SSDP destination ~a:~a"
local-address
ssdp-multicast-address
ssdp-multicast-port)
local-address)
(lambda ()
(udp-close socket)))))