summaryrefslogtreecommitdiff
path: root/accel-pppd/include
diff options
context:
space:
mode:
authorDenys Fedoryshchenko <denys.f@collabora.com>2026-08-27 09:14:05 +0300
committerDenys Fedoryshchenko <denys.f@collabora.com>2026-10-06 02:18:41 +0300
commitd8084108cc750962dafcd3716f5d243de2e56418 (patch)
tree0264d8afbb41d018df4de56be870d2658def3b14 /accel-pppd/include
parent2600050acd74bf6cea320e8d5f3c7ae09568b062 (diff)
downloadaccel-ppp-d8084108cc750962dafcd3716f5d243de2e56418.tar.gz
accel-ppp-d8084108cc750962dafcd3716f5d243de2e56418.zip
ipv6: use a dedicated type for per-session DNS
DNS-Server-IPv6-Address carries a full IPv6 address, so storing it in ipv6db_addr_t also carried an unused prefix length and flags. Introduce dedicated DNS list and address types so the representation matches the data. Suggested-by: Vladislav Grishenko <566150+themiron@users.noreply.github.com> Link: https://github.com/accel-ppp/accel-ppp/commit/4f562467dbdf819395e138617c2a057e02595b9e#r197215804
Diffstat (limited to 'accel-pppd/include')
-rw-r--r--accel-pppd/include/ap_session.h8
-rw-r--r--accel-pppd/include/ipv6_dns.h12
2 files changed, 14 insertions, 6 deletions
diff --git a/accel-pppd/include/ap_session.h b/accel-pppd/include/ap_session.h
index a0733986..3bc8360b 100644
--- a/accel-pppd/include/ap_session.h
+++ b/accel-pppd/include/ap_session.h
@@ -41,6 +41,7 @@
struct ap_session;
struct backup_data;
struct rtnl_link_stats;
+struct ipv6_dns_t;
struct ap_ctrl {
struct triton_context_t *ctx;
@@ -87,10 +88,9 @@ struct ap_session
struct ipv6db_prefix_t *ipv6_dp;
/* Per session IPv6 DNS servers, NULL when none were assigned and the
globally configured ones ([ipv6-dns]) should be advertised instead.
- Only addr_list, and only the addr member of its entries, is
- meaningful here. Owned by whoever sets it, currently the radius
- module from the DNS-Server-IPv6-Address attribute (RFC 6911) */
- struct ipv6db_item_t *ipv6_dns;
+ Owned by whoever sets it, currently the radius module from the
+ DNS-Server-IPv6-Address attribute (RFC 6911) */
+ struct ipv6_dns_t *ipv6_dns;
char *ipv4_pool_name;
char *ipv6_pool_name;
char *dpv6_pool_name;
diff --git a/accel-pppd/include/ipv6_dns.h b/accel-pppd/include/ipv6_dns.h
index b604d006..b1d74708 100644
--- a/accel-pppd/include/ipv6_dns.h
+++ b/accel-pppd/include/ipv6_dns.h
@@ -4,9 +4,17 @@
#include <netinet/in.h>
#include "list.h"
-#include "ipdb.h"
#include "ap_session.h"
+struct ipv6_dns_addr_t {
+ struct list_head entry;
+ struct in6_addr addr;
+};
+
+struct ipv6_dns_t {
+ struct list_head addr_list;
+};
+
/*
* Pick the IPv6 DNS servers to advertise to a session.
*
@@ -22,7 +30,7 @@ static inline int ipv6_dns_get(const struct ap_session *ses,
const struct in6_addr *conf_dns, int conf_dns_count,
struct in6_addr *dns, int max)
{
- struct ipv6db_addr_t *a;
+ struct ipv6_dns_addr_t *a;
int count = 0;
if (ses && ses->ipv6_dns) {