unbound 0.1
Data Structures | Macros | Enumerations | Functions
proxy_protocol.h File Reference

This file contains PROXY protocol structs and functions. More...

#include "sldns/sbuffer.h"

Data Structures

struct  pp2_header
 PROXYv2 header. More...
 

Macros

#define PP2_HEADER_SIZE   16
 PROXYv2 minimum header size.
 
#define PP2_SIG   "\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"
 PROXYv2 header signature.
 
#define PP2_SIG_LEN   12
 
#define PP2_VERSION   0x2
 PROXYv2 version.
 

Enumerations

enum  pp2_command { PP2_CMD_LOCAL = 0x0 , PP2_CMD_PROXY = 0x1 }
 PROXYv2 command.
 
enum  pp2_af { PP2_AF_UNSPEC = 0x0 , PP2_AF_INET = 0x1 , PP2_AF_INET6 = 0x2 , PP2_AF_UNIX = 0x3 }
 PROXYv2 address family.
 
enum  pp2_protocol { PP2_PROT_UNSPEC = 0x0 , PP2_PROT_STREAM = 0x1 , PP2_PROT_DGRAM = 0x2 }
 PROXYv2 protocol.
 

Functions

int pp2_write_to_buf (struct sldns_buffer *buf, struct sockaddr_storage *src, int stream)
 Write a PROXYv2 header at the current position of the buffer.
 
struct pp2_headerpp2_read_header (struct sldns_buffer *buf)
 Read a PROXYv2 header from the current position of the buffer.
 

Detailed Description

This file contains PROXY protocol structs and functions.

Only v2 is supported. TLVs are not currently supported.

Function Documentation

◆ pp2_write_to_buf()

int pp2_write_to_buf ( struct sldns_buffer buf,
struct sockaddr_storage *  src,
int  stream 
)

Write a PROXYv2 header at the current position of the buffer.

Parameters
bufthe buffer to write to.
srcthe source address.
streamif the protocol is stream or datagram.
Returns
1 on success, 0 on failure.

References PP2_HEADER_SIZE, PP2_SIG, PP2_VERSION, sldns_buffer_position(), sldns_buffer_remaining(), sldns_buffer_set_at(), sldns_buffer_skip(), sldns_buffer_write(), sldns_buffer_write_u16(), sldns_buffer_write_u32(), and sldns_buffer_write_u8().

◆ pp2_read_header()

struct pp2_header * pp2_read_header ( struct sldns_buffer buf)

Read a PROXYv2 header from the current position of the buffer.

It does initial validation and returns a pointer to the buffer position on success.

Parameters
bufthe buffer to read from.
Returns
the pointer to the buffer position on success, NULL on error.

References log_err(), PP2_HEADER_SIZE, PP2_SIG, PP2_VERSION, sldns_buffer_begin(), and sldns_buffer_remaining().

Referenced by comm_point_tcp_handle_read(), consume_pp2_header(), and ssl_handle_read().