aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-07-30 09:24:55 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-07-30 09:24:55 +0200
commit4f44f33a1ac61eae5f9c61852a97251e60372721 (patch)
tree768904d6c84f23a0e4762d110681bb04ff1a8f1a /src
parente0b75cab5d6835946b790d9188e1d94fc0653f69 (diff)
add ipcp dns options
Diffstat (limited to 'src')
-rw-r--r--src/ipcp.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/ipcp.rs b/src/ipcp.rs
index 1583a21..5222813 100644
--- a/src/ipcp.rs
+++ b/src/ipcp.rs
@@ -16,11 +16,15 @@ const IPCP_CODE_REJECT: u8 = 7;
// Contributions are welcome.
const OPT_IP_COMPRESSION_PROTOCOL: u8 = 2;
const OPT_IP_ADDRESS: u8 = 3;
+const OPT_PRIMARY_DNS: u8 = 129;
+const OPT_SECONDARY_DNS: u8 = 131;
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum IpcpOpt {
IpCompressionProtocol(IpCompressionProtocol),
IpAddr(Ipv4Addr),
+ PrimaryDns(Ipv4Addr),
+ SecondaryDns(Ipv4Addr),
}
impl Serialize for IpcpOpt {
@@ -28,6 +32,8 @@ impl Serialize for IpcpOpt {
match self {
Self::IpCompressionProtocol(payload) => payload.serialize(w),
Self::IpAddr(payload) => payload.serialize(w),
+ Self::PrimaryDns(payload) => payload.serialize(w),
+ Self::SecondaryDns(payload) => payload.serialize(w),
}
}
}
@@ -37,6 +43,8 @@ impl IpcpOpt {
match self {
Self::IpCompressionProtocol(_) => OPT_IP_COMPRESSION_PROTOCOL,
Self::IpAddr(_) => OPT_IP_ADDRESS,
+ Self::PrimaryDns(_) => OPT_PRIMARY_DNS,
+ Self::SecondaryDns(_) => OPT_SECONDARY_DNS,
}
}
@@ -44,6 +52,8 @@ impl IpcpOpt {
match self {
Self::IpCompressionProtocol(payload) => payload.len(),
Self::IpAddr(_) => 4,
+ Self::PrimaryDns(_) => 4,
+ Self::SecondaryDns(_) => 4,
}
}
@@ -65,6 +75,18 @@ impl IpcpOpt {
tmp.deserialize(r)?;
*self = Self::IpAddr(tmp);
}
+ OPT_PRIMARY_DNS => {
+ let mut tmp = Ipv4Addr::default();
+
+ tmp.deserialize(r)?;
+ *self = Self::PrimaryDns(tmp);
+ }
+ OPT_SECONDARY_DNS => {
+ let mut tmp = Ipv4Addr::default();
+
+ tmp.deserialize(r)?;
+ *self = Self::SecondaryDns(tmp);
+ }
_ => return Err(Error::InvalidIpcpOptionType(*discriminant)),
}