2009-01-13 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>

* backend/pixma_bjnp.c: send broadcasts from bjnp port to make
        firewalling easier
merge-requests/1/head
Louis Lagendijk 2009-01-13 22:00:32 +00:00
rodzic 894e0cc8ed
commit 1b57825ef3
2 zmienionych plików z 17 dodań i 9 usunięć

Wyświetl plik

@ -1,3 +1,7 @@
2009-01-13 Louis Lagendijk <llagendijk-guest at users.alioth.debian.org>
* backend/pixma_bjnp.c: send broadcasts from bjnp port to make
firewalling easier
2009-01-13 Julien Blache <jb@jblache.org> 2009-01-13 Julien Blache <jb@jblache.org>
* tools/sane-desc.c: replace opencoded device permissions and * tools/sane-desc.c: replace opencoded device permissions and
ownership by proper definitions. Group USB devices by vendor in ownership by proper definitions. Group USB devices by vendor in

Wyświetl plik

@ -563,8 +563,8 @@ parse_scanner_address (char *resp_buf, char *address, char *serial)
} }
static int static int
bjnp_send_broadcast (struct in_addr broadcast_addr, struct BJNP_command cmd, bjnp_send_broadcast (struct in_addr local_addr, struct in_addr broadcast_addr,
int size) struct BJNP_command cmd, int size)
{ {
/* /*
* send command to interface and return open socket * send command to interface and return open socket
@ -595,11 +595,11 @@ bjnp_send_broadcast (struct in_addr broadcast_addr, struct BJNP_command cmd,
return -1; return -1;
}; };
/* Bind to local address, let OS select local address and port */ /* Bind to local address, use BJNP port */
sendaddr.sin_family = AF_INET; sendaddr.sin_family = AF_INET;
sendaddr.sin_port = htons (0); sendaddr.sin_port = htons (BJNP_PORT_SCAN);
sendaddr.sin_addr.s_addr = htonl (INADDR_ANY); sendaddr.sin_addr = local_addr;
memset (sendaddr.sin_zero, '\0', sizeof sendaddr.sin_zero); memset (sendaddr.sin_zero, '\0', sizeof sendaddr.sin_zero);
if (bind if (bind
@ -1180,6 +1180,7 @@ sanei_bjnp_find_devices (const char **conf_devices,
struct ifaddrs *interface; struct ifaddrs *interface;
#else #else
struct in_addr broadcast; struct in_addr broadcast;
struct in_addr local;
#endif #endif
PDBG (pixma_dbg (LOG_INFO, "sanei_bjnp_find_devices:\n")); PDBG (pixma_dbg (LOG_INFO, "sanei_bjnp_find_devices:\n"));
@ -1219,8 +1220,10 @@ sanei_bjnp_find_devices (const char **conf_devices,
if ((socket_fd[no_sockets] = if ((socket_fd[no_sockets] =
bjnp_send_broadcast (((struct sockaddr_in *) interface-> bjnp_send_broadcast (((struct sockaddr_in *) interface->
ifa_broadaddr)->sin_addr, cmd, ifa_addr)->sin_addr,
sizeof (cmd))) != -1) ((struct sockaddr_in *) interface->
ifa_broadaddr)->sin_addr,
cmd, sizeof (cmd))) != -1)
{ {
if (socket_fd[no_sockets] > last_socketfd) if (socket_fd[no_sockets] > last_socketfd)
{ {
@ -1240,10 +1243,11 @@ sanei_bjnp_find_devices (const char **conf_devices,
/* we have no easy way to find interfaces with their broadcast addresses, use global broadcast */ /* we have no easy way to find interfaces with their broadcast addresses, use global broadcast */
no_sockets = 0; no_sockets = 0;
broadcast.s_addr = INADDR_BROADCAST; broadcast.s_addr = htonl(INADDR_BROADCAST);
local.s_addr = htonl(INADDR_ANY);
if ((socket_fd[no_sockets] = if ((socket_fd[no_sockets] =
bjnp_send_broadcast (broadcast, cmd, sizeof (cmd))) != -1) bjnp_send_broadcast (local, broadcast, cmd, sizeof (cmd))) != -1)
{ {
if (socket_fd[no_sockets] > last_socketfd) if (socket_fd[no_sockets] > last_socketfd)
{ {