#openbsd #config-parser #lease #dhcpd #leases

dhcpd_parser

Parser for dhcpd configuration files. Currently supports only dhcpd.leases file of the OpenBSD base implementation

9 unstable releases (3 breaking)

0.4.3 Oct 17, 2019
0.4.2 Oct 16, 2019
0.3.1 Oct 7, 2019
0.2.0 Sep 30, 2019
0.1.1 Sep 30, 2019

#747 in Configuration

MIT license

28KB
685 lines

dhcpd config parser

Rust library for parsing OpenBSD dhcpd configuration files.

The library currently supports only OpenBSD implementation of the dhcpd.leases file format. See man pages

Example usage

use dhcpd_parser::parser;
use dhcpd_parser::parser::LeasesMethods;


let res = parser::parse("
    lease 192.168.0.2 {
        starts 2 2019/01/01 22:00:00 UTC;
        ends 2 2019/01/01 22:00:00 UTC;
        hardware type 11:11:11:11:11:11;
        uid Client1;
        client-hostname \"CLIENTHOSTNAME\";
        hostname \"TESTHOSTNAME\";
        abandoned;
    }

    lease 192.168.0.3 {
        starts 1 1985/01/01 00:00:00 UTC;
        hardware type 22:22:22:22:22:22;
        uid Client2;
        hostname \"TESTHOSTNAME\";
    }
".to_string()).expect("This should be a correct lease file");

let leases = res.unwrap().leases;

assert_eq!(
    leases[0].hostname.as_ref().unwrap(),
    "TESTHOSTNAME",
);
assert_eq!(
    leases[1].dates.starts.unwrap().to_string(),
    "Monday 1985/01/01 00:00:00",
);
assert!(leases[1].dates.ends.is_none());

assert!(leases[0].abandoned);
assert!(!leases[1].abandoned);
assert_eq!(
    leases.client_hostnames(),
    ["CLIENTHOSTNAME".to_owned()]
        .iter()
        .cloned()
        .collect(),
);

No runtime deps