unbound: util/proxy_protocol.h File Reference

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_header * | pp2_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

  buf | the buffer to write to.
  src | the source address.
  stream | if 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

  buf | the 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().