summaryrefslogtreecommitdiff
path: root/accel-pppd/radius/radius.c
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pppd/radius/radius.c')
-rw-r--r--accel-pppd/radius/radius.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/accel-pppd/radius/radius.c b/accel-pppd/radius/radius.c
index c24522d..57e6dba 100644
--- a/accel-pppd/radius/radius.c
+++ b/accel-pppd/radius/radius.c
@@ -57,13 +57,28 @@ int rad_proc_attrs(struct rad_req_t *req)
{
struct rad_attr_t *attr;
struct ipv6db_addr_t *a;
+ struct ev_dns_t dns;
int res = 0;
+ dns.ppp = NULL;
req->rpd->acct_interim_interval = conf_acct_interim_interval;
list_for_each_entry(attr, &req->reply->attrs, entry) {
- if (attr->vendor)
+ if (attr->vendor && attr->vendor->id == Vendor_Microsoft) {
+ switch (attr->attr->id) {
+ case MS_Primary_DNS_Server:
+ dns.ppp = req->rpd->ppp;
+ dns.dns1 = attr->val.ipaddr;
+ break;
+ case MS_Secondary_DNS_Server:
+ dns.ppp = req->rpd->ppp;
+ dns.dns2 = attr->val.ipaddr;
+ break;
+ }
continue;
+ } else if (attr->vendor)
+ continue;
+
switch(attr->attr->id) {
case Framed_IP_Address:
if (!conf_gw_ip_address)
@@ -123,6 +138,9 @@ int rad_proc_attrs(struct rad_req_t *req)
}
}
+ if (dns.ppp)
+ triton_event_fire(EV_DNS, &dns);
+
return res;
}