diff options
| author | Denys Fedoryshchenko <denys.f@collabora.com> | 2026-08-27 09:14:05 +0300 |
|---|---|---|
| committer | Denys Fedoryshchenko <denys.f@collabora.com> | 2026-10-06 02:18:41 +0300 |
| commit | d8084108cc750962dafcd3716f5d243de2e56418 (patch) | |
| tree | 0264d8afbb41d018df4de56be870d2658def3b14 /accel-pppd/include | |
| parent | 2600050acd74bf6cea320e8d5f3c7ae09568b062 (diff) | |
| download | accel-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.h | 8 | ||||
| -rw-r--r-- | accel-pppd/include/ipv6_dns.h | 12 |
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) { |
