1use std::str::FromStr;
2
3#[allow(non_camel_case_types)]
4#[derive(Copy, Clone, Debug)]
5pub enum Facility {
6 LOG_KERN = 0 << 3,
7 LOG_USER = 1 << 3,
8 LOG_MAIL = 2 << 3,
9 LOG_DAEMON = 3 << 3,
10 LOG_AUTH = 4 << 3,
11 LOG_SYSLOG = 5 << 3,
12 LOG_LPR = 6 << 3,
13 LOG_NEWS = 7 << 3,
14 LOG_UUCP = 8 << 3,
15 LOG_CRON = 9 << 3,
16 LOG_AUTHPRIV = 10 << 3,
17 LOG_FTP = 11 << 3,
18 LOG_NTP = 12 << 3,
19 LOG_AUDIT = 13 << 3,
20 LOG_ALERT = 14 << 3,
21 LOG_CLOCK_DAEMON = 15 << 3,
22 LOG_LOCAL0 = 16 << 3,
23 LOG_LOCAL1 = 17 << 3,
24 LOG_LOCAL2 = 18 << 3,
25 LOG_LOCAL3 = 19 << 3,
26 LOG_LOCAL4 = 20 << 3,
27 LOG_LOCAL5 = 21 << 3,
28 LOG_LOCAL6 = 22 << 3,
29 LOG_LOCAL7 = 23 << 3,
30}
31
32impl FromStr for Facility {
33 type Err = ();
34 fn from_str(s: &str) -> Result<Facility, ()> {
35 let result = match &s.to_lowercase()[..] {
36 "log_kern" | "kern" => Facility::LOG_KERN,
37 "log_user" | "user" => Facility::LOG_USER,
38 "log_mail" | "mail" => Facility::LOG_MAIL,
39 "log_daemon" | "daemon" => Facility::LOG_DAEMON,
40 "log_auth" | "auth" => Facility::LOG_AUTH,
41 "log_syslog" | "syslog" => Facility::LOG_SYSLOG,
42 "log_lpr" | "lpr" => Facility::LOG_LPR,
43 "log_news" | "news" => Facility::LOG_NEWS,
44 "log_uucp" | "uucp" => Facility::LOG_UUCP,
45 "log_cron" | "cron" => Facility::LOG_CRON,
46 "log_authpriv" | "authpriv" => Facility::LOG_AUTHPRIV,
47 "log_ftp" | "ftp" => Facility::LOG_FTP,
48 "log_ntp" | "ntp" => Facility::LOG_NTP,
49 "log_audit" | "audit" => Facility::LOG_AUDIT,
50 "log_alert" | "alert" => Facility::LOG_ALERT,
51 "log_clock_daemon" | "clock_daemon" => Facility::LOG_CLOCK_DAEMON,
52 "log_local0" | "local0" => Facility::LOG_LOCAL0,
53 "log_local1" | "local1" => Facility::LOG_LOCAL1,
54 "log_local2" | "local2" => Facility::LOG_LOCAL2,
55 "log_local3" | "local3" => Facility::LOG_LOCAL3,
56 "log_local4" | "local4" => Facility::LOG_LOCAL4,
57 "log_local5" | "local5" => Facility::LOG_LOCAL5,
58 "log_local6" | "local6" => Facility::LOG_LOCAL6,
59 "log_local7" | "local7" => Facility::LOG_LOCAL7,
60 _ => return Err(()),
61 };
62 Ok(result)
63 }
64}
65
66impl Default for Facility {
67 fn default() -> Self {
71 Facility::LOG_USER
72 }
73}