mirror of
http://git.haproxy.org/git/haproxy.git
synced 2026-02-06 16:43:35 +02:00
This patch introduce the "dns_stream_nameserver" to use DNS over TCP on strict nameservers. For the upper layer it is analog to the api used with udp nameservers except that the user que switch the name server in "stream" mode at the init using "dns_stream_init". The fallback from UDP to TCP is not handled and this is not the purpose of this feature. This is done to choose the transport layer during the initialization. Currently there is a hardcoded limit of 4 pipelined transactions per TCP connections. A batch of idle connections is expired every 5s. This code is designed to support a maximum DNS message size on TCP: 64k. Note: this code won't perform retry on unanswered queries this should be handled by the upper layer
34 lines
1.2 KiB
C
34 lines
1.2 KiB
C
/*
|
|
* include/haproxy/dns.h
|
|
* This file provides functions related to DNS protocol
|
|
*
|
|
* Copyright (C) 2020 Haproxy Technologies
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation, version 2.1
|
|
* exclusively.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef _HAPROXY_DNS_H
|
|
#define _HAPROXY_DNS_H
|
|
|
|
#include <haproxy/dns-t.h>
|
|
#include <haproxy/server-t.h>
|
|
|
|
int dns_send_nameserver(struct dns_nameserver *ns, void *buf, size_t len);
|
|
ssize_t dns_recv_nameserver(struct dns_nameserver *ns, void *data, size_t size);
|
|
int dns_dgram_init(struct dns_nameserver *ns, struct sockaddr_storage *sk);
|
|
int dns_stream_init(struct dns_nameserver *ns, struct server *s);
|
|
|
|
#endif // _HAPROXY_DNS_H
|