|
Lines 44-49
Link Here
|
| 44 |
#include "ssherr.h" |
44 |
#include "ssherr.h" |
| 45 |
#include "ssh_api.h" |
45 |
#include "ssh_api.h" |
| 46 |
#include "dns.h" |
46 |
#include "dns.h" |
|
|
47 |
#include "addr.h" |
| 47 |
|
48 |
|
| 48 |
/* Flag indicating whether IPv4 or IPv6. This can be set on the command line. |
49 |
/* Flag indicating whether IPv4 or IPv6. This can be set on the command line. |
| 49 |
Default value is AF_UNSPEC means both IPv4 and IPv6. */ |
50 |
Default value is AF_UNSPEC means both IPv4 and IPv6. */ |
|
Lines 364-370
tcpconnect(char *host)
Link Here
|
| 364 |
} |
365 |
} |
| 365 |
|
366 |
|
| 366 |
static int |
367 |
static int |
| 367 |
conalloc(char *iname, char *oname, int keytype) |
368 |
conalloc(const char *iname, const char *oname, int keytype) |
| 368 |
{ |
369 |
{ |
| 369 |
char *namebase, *name, *namelist; |
370 |
char *namebase, *name, *namelist; |
| 370 |
int s; |
371 |
int s; |
|
Lines 595-601
conloop(void)
Link Here
|
| 595 |
} |
596 |
} |
| 596 |
|
597 |
|
| 597 |
static void |
598 |
static void |
| 598 |
do_host(char *host) |
599 |
do_one_host(char *host) |
| 599 |
{ |
600 |
{ |
| 600 |
char *name = strnnsep(&host, " \t\n"); |
601 |
char *name = strnnsep(&host, " \t\n"); |
| 601 |
int j; |
602 |
int j; |
|
Lines 611-616
do_host(char *host)
Link Here
|
| 611 |
} |
612 |
} |
| 612 |
} |
613 |
} |
| 613 |
|
614 |
|
|
|
615 |
static void |
| 616 |
do_host(char *host) |
| 617 |
{ |
| 618 |
char daddr[128]; |
| 619 |
struct xaddr addr, start_addr, end_addr; |
| 620 |
u_int masklen; |
| 621 |
|
| 622 |
if (host == NULL) |
| 623 |
return; |
| 624 |
if (addr_pton_cidr(host, &addr, &masklen) != 0) { |
| 625 |
/* Assume argument is a hostname */ |
| 626 |
do_one_host(host); |
| 627 |
} else { |
| 628 |
/* Argument is a CIDR range */ |
| 629 |
debug("CIDR range %s", host); |
| 630 |
start_addr = end_addr = addr; |
| 631 |
if (addr_host_to_all0s(&start_addr, masklen) != 0 || |
| 632 |
addr_host_to_all1s(&end_addr, masklen) != 0) |
| 633 |
goto badaddr; |
| 634 |
/* |
| 635 |
* Note: we deliberately include the all-zero/ones addresses. |
| 636 |
*/ |
| 637 |
for (;;) { |
| 638 |
if (addr_ntop(&addr, daddr, sizeof(daddr)) != 0) { |
| 639 |
badaddr: |
| 640 |
error("Invalid address %s", host); |
| 641 |
return; |
| 642 |
} |
| 643 |
debug("CIDR expand: address %s", daddr); |
| 644 |
do_one_host(daddr); |
| 645 |
if (addr_cmp(&addr, &end_addr) == 0) |
| 646 |
break; |
| 647 |
addr_increment(&addr); |
| 648 |
}; |
| 649 |
} |
| 650 |
} |
| 651 |
|
| 614 |
void |
652 |
void |
| 615 |
sshfatal(const char *file, const char *func, int line, int showfunc, |
653 |
sshfatal(const char *file, const char *func, int line, int showfunc, |
| 616 |
LogLevel level, const char *suffix, const char *fmt, ...) |
654 |
LogLevel level, const char *suffix, const char *fmt, ...) |