rfc2671.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #include "squid.h"
10 #include "dns/rfc1035.h"
11 #include "dns/rfc2671.h"
12 
13 int
14 rfc2671RROptPack(char *buf, size_t sz, ssize_t edns_sz)
15 {
16  // set the OPT record correctly. base it on a macro size of the Squid DNS read buffer
17  static rfc1035_rr opt;
18 
19  // EDNS OPT record says only what our DNS buffer size is so far.
20  snprintf(opt.name, RFC1035_MAXHOSTNAMESZ, ".");
21  opt.type = RFC1035_TYPE_OPT;
22  opt._class = min(edns_sz, (ssize_t)SQUID_UDP_SO_RCVBUF-1);
23  opt.ttl = 0; // relevant?
24  opt.rdata = nullptr;
25  opt.rdlength = 0;
26 
27  return rfc1035RRPack(buf, sz, &opt);
28 }
29 
unsigned short type
Definition: rfc1035.h:40
unsigned short rdlength
Definition: rfc1035.h:43
int rfc1035RRPack(char *buf, const size_t sz, const rfc1035_rr *RR)
Definition: rfc1035.cc:330
int rfc2671RROptPack(char *buf, size_t sz, ssize_t edns_sz)
Definition: rfc2671.cc:14
#define RFC1035_MAXHOSTNAMESZ
Definition: rfc1035.h:32
char * rdata
Definition: rfc1035.h:44
#define SQUID_UDP_SO_RCVBUF
Definition: squid.h:49
unsigned short _class
Definition: rfc1035.h:41
unsigned int ttl
Definition: rfc1035.h:42
#define RFC1035_TYPE_OPT
Definition: rfc2671.h:13
char name[RFC1035_MAXHOSTNAMESZ]
Definition: rfc1035.h:39
const A & min(A const &lhs, A const &rhs)

 

Introduction

Documentation

Support

Miscellaneous