/src/strongswan/src/libimcv/pwg/pwg_attr.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (C) 2015 Andreas Steffen |
3 | | * |
4 | | * Copyright (C) secunet Security Networks AG |
5 | | * |
6 | | * This program is free software; you can redistribute it and/or modify it |
7 | | * under the terms of the GNU General Public License as published by the |
8 | | * Free Software Foundation; either version 2 of the License, or (at your |
9 | | * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. |
10 | | * |
11 | | * This program is distributed in the hope that it will be useful, but |
12 | | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
13 | | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
14 | | * for more details. |
15 | | */ |
16 | | |
17 | | #include "pwg_attr.h" |
18 | | |
19 | | #include "generic/generic_attr_bool.h" |
20 | | #include "generic/generic_attr_chunk.h" |
21 | | #include "generic/generic_attr_string.h" |
22 | | #include "ietf/ietf_attr_fwd_enabled.h" |
23 | | #include "ietf/ietf_attr_port_filter.h" |
24 | | #include "pwg/pwg_attr_vendor_smi_code.h" |
25 | | |
26 | | ENUM_BEGIN(pwg_attr_names, PWG_HCD_ATTRS_NATURAL_LANG, |
27 | | PWG_HCD_VENDOR_SMI_CODE, |
28 | | "HCD AttributesNaturalLanguage", |
29 | | "HCD MachineTypeModel", |
30 | | "HCD VendorName", |
31 | | "HCD VendorSMICode"); |
32 | | ENUM_NEXT(pwg_attr_names, PWG_HCD_DEFAULT_PWD_ENABLED, |
33 | | PWG_HCD_FORWARDING_ENABLED, |
34 | | PWG_HCD_VENDOR_SMI_CODE, |
35 | | "HCD DefaultPasswordEnabled", |
36 | | "HCD FirewallSetting", |
37 | | "HCD ForwardingEnabled"); |
38 | | ENUM_NEXT(pwg_attr_names, PWG_HCD_PSTN_FAX_ENABLED, |
39 | | PWG_HCD_PSTN_FAX_ENABLED, |
40 | | PWG_HCD_FORWARDING_ENABLED, |
41 | | "HCD PSTNFaxEnabled"); |
42 | | ENUM_NEXT(pwg_attr_names, PWG_HCD_TIME_SOURCE, |
43 | | PWG_HCD_TIME_SOURCE, |
44 | | PWG_HCD_PSTN_FAX_ENABLED, |
45 | | "HCD TimeSource"); |
46 | | ENUM_NEXT(pwg_attr_names, PWG_HCD_FIRMWARE_NAME, |
47 | | PWG_HCD_FIRMWARE_VERSION, |
48 | | PWG_HCD_TIME_SOURCE, |
49 | | "HCD FirmwareName", |
50 | | "HCD FirmwarePatches", |
51 | | "HCD FirmwareStringVersion", |
52 | | "HCD FirmwareVersion"); |
53 | | ENUM_NEXT(pwg_attr_names, PWG_HCD_RESIDENT_APP_NAME, |
54 | | PWG_HCD_RESIDENT_APP_VERSION, |
55 | | PWG_HCD_FIRMWARE_VERSION, |
56 | | "HCD ResidentApplicationName", |
57 | | "HCD ResidentApplicationPatches", |
58 | | "HCD ResidentApplicationStringVersion", |
59 | | "HCD ResidentApplicationVersion"); |
60 | | ENUM_NEXT(pwg_attr_names, PWG_HCD_USER_APP_NAME, |
61 | | PWG_HCD_USER_APP_PERSIST_ENABLED, |
62 | | PWG_HCD_RESIDENT_APP_VERSION, |
63 | | "HCD UserApplicationName", |
64 | | "HCD UserApplicationPatches", |
65 | | "HCD UserApplicationStringVersion", |
66 | | "HCD UserApplicationVersion", |
67 | | "HCD UserApplicationEnabled", |
68 | | "HCD UserApplicationPersistenceEnabled"); |
69 | | ENUM_NEXT(pwg_attr_names, PWG_HCD_CERTIFICATION_STATE, |
70 | | PWG_HCD_CONFIGURATION_STATE, |
71 | | PWG_HCD_USER_APP_PERSIST_ENABLED, |
72 | | "HCD CertificationState", |
73 | | "HCD ConfigurationState"); |
74 | | ENUM_END(pwg_attr_names, PWG_HCD_CONFIGURATION_STATE); |
75 | | |
76 | | /** |
77 | | * See header |
78 | | */ |
79 | | pa_tnc_attr_t* pwg_attr_create_from_data(uint32_t type, size_t length, chunk_t value) |
80 | 9.52k | { |
81 | 9.52k | switch (type) |
82 | 9.52k | { |
83 | 205 | case PWG_HCD_DEFAULT_PWD_ENABLED: |
84 | 479 | case PWG_HCD_USER_APP_ENABLED: |
85 | 810 | case PWG_HCD_USER_APP_PERSIST_ENABLED: |
86 | 1.02k | case PWG_HCD_PSTN_FAX_ENABLED: |
87 | 1.02k | return generic_attr_bool_create_from_data(length, value, |
88 | 1.02k | pen_type_create(PEN_PWG, type)); |
89 | 522 | case PWG_HCD_ATTRS_NATURAL_LANG: |
90 | 718 | case PWG_HCD_MACHINE_TYPE_MODEL: |
91 | 944 | case PWG_HCD_VENDOR_NAME: |
92 | 1.36k | case PWG_HCD_FIRMWARE_NAME: |
93 | 1.61k | case PWG_HCD_FIRMWARE_PATCHES: |
94 | 1.80k | case PWG_HCD_FIRMWARE_STRING_VERSION: |
95 | 2.10k | case PWG_HCD_TIME_SOURCE: |
96 | 2.30k | case PWG_HCD_USER_APP_NAME: |
97 | 2.67k | case PWG_HCD_USER_APP_PATCHES: |
98 | 2.90k | case PWG_HCD_USER_APP_STRING_VERSION: |
99 | 3.42k | case PWG_HCD_RESIDENT_APP_NAME: |
100 | 3.69k | case PWG_HCD_RESIDENT_APP_PATCHES: |
101 | 3.89k | case PWG_HCD_RESIDENT_APP_STRING_VERSION: |
102 | 3.89k | return generic_attr_string_create_from_data(length, value, |
103 | 3.89k | pen_type_create(PEN_PWG, type)); |
104 | 208 | case PWG_HCD_FIRMWARE_VERSION: |
105 | 413 | case PWG_HCD_RESIDENT_APP_VERSION: |
106 | 613 | case PWG_HCD_USER_APP_VERSION: |
107 | 613 | return generic_attr_chunk_create_from_data(length, value, 16, |
108 | 613 | pen_type_create(PEN_PWG, type)); |
109 | 457 | case PWG_HCD_CERTIFICATION_STATE: |
110 | 955 | case PWG_HCD_CONFIGURATION_STATE: |
111 | 955 | return generic_attr_chunk_create_from_data(length, value, 0, |
112 | 955 | pen_type_create(PEN_PWG, type)); |
113 | 296 | case PWG_HCD_VENDOR_SMI_CODE: |
114 | 296 | return pwg_attr_vendor_smi_code_create_from_data(length, value); |
115 | 80 | case PWG_HCD_FORWARDING_ENABLED: |
116 | 80 | return ietf_attr_fwd_enabled_create_from_data(length, value, |
117 | 80 | pen_type_create(PEN_PWG, type)); |
118 | 2.38k | case PWG_HCD_FIREWALL_SETTING: |
119 | 2.38k | return ietf_attr_port_filter_create_from_data(length, value, |
120 | 2.38k | pen_type_create(PEN_PWG, type)); |
121 | 271 | default: |
122 | 271 | return NULL; |
123 | 9.52k | } |
124 | 9.52k | } |