streamtcp.c File Reference

This program performs multiple DNS queries on a TCP stream. More...

#include "config.h"
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
#include "util/locks.h"
#include "util/log.h"
#include "util/net_help.h"
#include "util/proxy_protocol.h"
#include "util/data/msgencode.h"
#include "util/data/msgparse.h"
#include "util/data/msgreply.h"
#include "util/data/dname.h"
#include "sldns/sbuffer.h"
#include "sldns/str2wire.h"
#include "sldns/wire2str.h"
#include <openssl/ssl.h>
#include <openssl/rand.h>
#include <openssl/err.h>

Macros

#define PF_INET6   10
 define in case streamtcp is compiled on legacy systems
 

Functions

static void usage (char *argv[])
 usage information for streamtcp
 
static int open_svr (const char *svr, int udp, struct sockaddr_storage *addr, socklen_t *addrlen)
 open TCP socket to svr
 
static void write_soa_serial_to_buf (sldns_buffer *buf, struct query_info *qinfo, uint32_t serial)
 Append a SOA record with serial number.
 
static void write_q (int fd, int udp, SSL *ssl, sldns_buffer *buf, uint16_t id, sldns_buffer *proxy_buf, int pp2_parsed, const char *strname, const char *strtype, const char *strclass)
 write a query over the TCP fd
 
static void recv_one (int fd, int udp, SSL *ssl, sldns_buffer *buf)
 receive DNS datagram over TCP and print it
 
static void print_any_answers (int fd, int udp, SSL *ssl, sldns_buffer *buf, int *num_answers, int wait_all)
 see if we can receive any results
 
static int get_random (void)
 
static int parse_pp2_client (const char *pp2_client, int udp, sldns_buffer *proxy_buf)
 
static void send_em (const char *svr, const char *pp2_client, int udp, int usessl, int noanswer, int onarrival, int delay, int num, char **qs)
 send the TCP queries and print answers
 
int main (int argc, char **argv)
 main program for streamtcp
 

Variables

int optind
 getopt global, in case header files fail to declare it.
 
char * optarg
 getopt global, in case header files fail to declare it.
 

Detailed Description

This program performs multiple DNS queries on a TCP stream.