148 lines
3.9 KiB
Text
148 lines
3.9 KiB
Text
$NetBSD: patch-af,v 1.4 2013/11/21 09:18:17 obache Exp $
|
|
|
|
* Treat NetBSD same as FreeBSD.
|
|
* Move sys/param.h and config.h header files before using conditions.
|
|
* libupnp>=1.6.7 support.
|
|
|
|
--- src/ushare.c.orig 2007-12-09 13:03:36.000000000 +0000
|
|
+++ src/ushare.c
|
|
@@ -28,7 +28,11 @@
|
|
#include <errno.h>
|
|
#include <getopt.h>
|
|
|
|
-#if (defined(BSD) || defined(__FreeBSD__) || defined(__APPLE__))
|
|
+#if (defined(__unix__) || defined(unix)) && !defined(USG) || defined(__NetBSD__)
|
|
+#include <sys/param.h>
|
|
+#endif
|
|
+
|
|
+#if (defined(BSD) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__NetBSD__))
|
|
#include <sys/socket.h>
|
|
#include <sys/sysctl.h>
|
|
#include <net/if_dl.h>
|
|
@@ -49,18 +53,19 @@
|
|
#include <ifaddrs.h>
|
|
#endif
|
|
|
|
-#if (defined(__unix__) || defined(unix)) && !defined(USG)
|
|
-#include <sys/param.h>
|
|
-#endif
|
|
-
|
|
#include <upnp/upnp.h>
|
|
#include <upnp/upnptools.h>
|
|
|
|
+#if UPNP_VERSION >= 10607
|
|
+#include <netdb.h>
|
|
+#endif
|
|
+
|
|
+#include "config.h"
|
|
+
|
|
#if (defined(HAVE_SETLOCALE) && defined(CONFIG_NLS))
|
|
# include <locale.h>
|
|
#endif
|
|
|
|
-#include "config.h"
|
|
#include "ushare.h"
|
|
#include "services.h"
|
|
#include "http.h"
|
|
@@ -177,7 +182,12 @@ handle_action_request (struct Upnp_Actio
|
|
struct service_t *service;
|
|
struct service_action_t *action;
|
|
char val[256];
|
|
+#if UPNP_VERSION < 10607
|
|
uint32_t ip;
|
|
+#else
|
|
+ int error;
|
|
+ int slen;
|
|
+#endif
|
|
|
|
if (!request || !ut)
|
|
return;
|
|
@@ -188,10 +198,30 @@ handle_action_request (struct Upnp_Actio
|
|
if (strcmp (request->DevUDN + 5, ut->udn))
|
|
return;
|
|
|
|
+#if UPNP_VERSION < 10607
|
|
ip = request->CtrlPtIPAddr.s_addr;
|
|
ip = ntohl (ip);
|
|
sprintf (val, "%d.%d.%d.%d",
|
|
(ip >> 24) & 0xFF, (ip >> 16) & 0xFF, (ip >> 8) & 0xFF, ip & 0xFF);
|
|
+#else
|
|
+#ifdef __sun
|
|
+ switch (request->CtrlPtIPAddr.ss_family) {
|
|
+ case AF_INET:
|
|
+ slen = sizeof (struct sockaddr_in);
|
|
+ break;
|
|
+ case AF_INET6:
|
|
+ slen = sizeof (struct sockaddr_in6);
|
|
+ break;
|
|
+ default:
|
|
+ slen = sizeof (request->CtrlPtIPAddr);
|
|
+ break;
|
|
+ }
|
|
+#else
|
|
+ slen = request->CtrlPtIPAddr.ss_len;
|
|
+#endif
|
|
+ error = getnameinfo((struct sockaddr *)&(request->CtrlPtIPAddr), slen,
|
|
+ val, sizeof(val), NULL, 0, NI_NUMERICHOST);
|
|
+#endif
|
|
|
|
if (ut->verbose)
|
|
{
|
|
@@ -505,7 +535,7 @@ create_udn (char *interface)
|
|
char *buf;
|
|
unsigned char *ptr;
|
|
|
|
-#if (defined(BSD) || defined(__FreeBSD__) || defined(__APPLE__))
|
|
+#if (defined(BSD) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__NetBSD__))
|
|
int mib[6];
|
|
size_t len;
|
|
struct if_msghdr *ifm;
|
|
@@ -517,7 +547,7 @@ create_udn (char *interface)
|
|
if (!interface)
|
|
return NULL;
|
|
|
|
-#if (defined(BSD) || defined(__FreeBSD__) || defined(__APPLE__))
|
|
+#if (defined(BSD) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__NetBSD__))
|
|
mib[0] = CTL_NET;
|
|
mib[1] = AF_ROUTE;
|
|
mib[2] = 0;
|
|
@@ -568,7 +598,7 @@ create_udn (char *interface)
|
|
buf = (char *) malloc (64 * sizeof (char));
|
|
memset (buf, 0, 64);
|
|
ptr = (unsigned char *) ifr.ifr_hwaddr.sa_data;
|
|
-#endif /* (defined(BSD) || defined(__FreeBSD__)) */
|
|
+#endif /* (defined(BSD) || defined(__FreeBSD__) || defined(__NetBSD__)) */
|
|
|
|
snprintf (buf, 64, "%s-%02x%02x%02x%02x%02x%02x", DEFAULT_UUID,
|
|
(ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
|
|
@@ -718,7 +748,7 @@ reload_config (int s __attribute__ ((unu
|
|
}
|
|
}
|
|
|
|
-inline void
|
|
+void
|
|
display_headers (void)
|
|
{
|
|
printf (_("%s (version %s), a lightweight UPnP A/V and DLNA Media Server.\n"),
|
|
@@ -734,11 +764,8 @@ setup_i18n(void)
|
|
#ifdef HAVE_SETLOCALE
|
|
setlocale (LC_ALL, "");
|
|
#endif
|
|
-#if (!defined(BSD) && !defined(__FreeBSD__))
|
|
bindtextdomain (PACKAGE, LOCALEDIR);
|
|
#endif
|
|
- textdomain (PACKAGE);
|
|
-#endif
|
|
}
|
|
|
|
#define SHUTDOWN_MSG _("Server is shutting down: other clients will be notified soon, Bye bye ...\n")
|
|
@@ -845,6 +872,9 @@ main (int argc, char **argv)
|
|
|
|
signal (SIGINT, UPnPBreak);
|
|
signal (SIGHUP, reload_config);
|
|
+#ifndef MSG_NOSIGNAL
|
|
+ signal (SIGPIPE, SIG_IGN);
|
|
+#endif
|
|
|
|
if (ut->use_telnet)
|
|
{
|