libimcv: Changed debug level for functional components from 2 to 3
[strongswan.git] / src / libimcv / pts / components / pts_comp_func_name.c
1 /*
2 * Copyright (C) 2011-2014 Andreas Steffen
3 *
4 * HSR Hochschule fuer Technik Rapperswil
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 "imcv.h"
18 #include "pts/components/pts_comp_func_name.h"
19
20 #include <utils/debug.h>
21
22 typedef struct private_pts_comp_func_name_t private_pts_comp_func_name_t;
23
24 /**
25 * Private data of a pts_comp_func_name_t object.
26 *
27 */
28 struct private_pts_comp_func_name_t {
29
30 /**
31 * Public pts_comp_func_name_t interface.
32 */
33 pts_comp_func_name_t public;
34
35 /**
36 * PTS Component Functional Name Vendor ID
37 */
38 uint32_t vid;
39
40 /**
41 * PTS Component Functional Name
42 */
43 uint32_t name;
44
45 /**
46 * PTS Component Functional Name Qualifier
47 */
48 uint8_t qualifier;
49
50 };
51
52 METHOD(pts_comp_func_name_t, get_vendor_id, uint32_t,
53 private_pts_comp_func_name_t *this)
54 {
55 return this->vid;
56 }
57
58 METHOD(pts_comp_func_name_t, get_name, uint32_t,
59 private_pts_comp_func_name_t *this)
60 {
61 return this->name;
62 }
63
64 METHOD(pts_comp_func_name_t, get_qualifier, uint8_t,
65 private_pts_comp_func_name_t *this)
66 {
67 return this->qualifier;
68 }
69
70 METHOD(pts_comp_func_name_t, set_qualifier, void,
71 private_pts_comp_func_name_t *this, uint8_t qualifier)
72 {
73 this->qualifier = qualifier;
74 }
75
76 static bool equals(private_pts_comp_func_name_t *this,
77 private_pts_comp_func_name_t *other)
78 {
79 if (this->vid != other->vid || this->name != other->name)
80 {
81 return FALSE;
82 }
83 if (this->qualifier == PTS_QUALIFIER_UNKNOWN ||
84 other->qualifier == PTS_QUALIFIER_UNKNOWN)
85 {
86 return TRUE;
87 }
88 /* TODO handle qualifier wildcards */
89
90 return this->qualifier == other->qualifier;
91 }
92
93 METHOD(pts_comp_func_name_t, clone_, pts_comp_func_name_t*,
94 private_pts_comp_func_name_t *this)
95 {
96 private_pts_comp_func_name_t *clone;
97
98 clone = malloc_thing(private_pts_comp_func_name_t);
99 memcpy(clone, this, sizeof(private_pts_comp_func_name_t));
100
101 return &clone->public;
102 }
103
104 METHOD(pts_comp_func_name_t, log_, void,
105 private_pts_comp_func_name_t *this, char *label)
106 {
107 enum_name_t *names, *types;
108 char flags[8];
109 int type;
110
111 names = imcv_pts_components->get_comp_func_names(imcv_pts_components,
112 this->vid);
113 types = imcv_pts_components->get_qualifier_type_names(imcv_pts_components,
114 this->vid);
115 type = imcv_pts_components->get_qualifier(imcv_pts_components,
116 &this->public, flags);
117
118 if (names && types)
119 {
120 DBG3(DBG_PTS, "%s%N functional component '%N' [%s] '%N'",
121 label, pen_names, this->vid, names, this->name, flags, types, type);
122 }
123 else
124 {
125 DBG3(DBG_PTS, "%s0x%06x functional component 0x%08x 0x%02x",
126 label, this->vid, this->name, this->qualifier);
127 }
128 }
129
130 METHOD(pts_comp_func_name_t, destroy, void,
131 private_pts_comp_func_name_t *this)
132 {
133 free(this);
134 }
135
136 /**
137 * See header
138 */
139 pts_comp_func_name_t* pts_comp_func_name_create(uint32_t vid, uint32_t name,
140 uint8_t qualifier)
141 {
142 private_pts_comp_func_name_t *this;
143
144 INIT(this,
145 .public = {
146 .get_vendor_id = _get_vendor_id,
147 .get_name = _get_name,
148 .get_qualifier = _get_qualifier,
149 .set_qualifier = _set_qualifier,
150 .equals = (bool(*)(pts_comp_func_name_t*,pts_comp_func_name_t*))equals,
151 .clone = _clone_,
152 .log = _log_,
153 .destroy = _destroy,
154 },
155 .vid = vid,
156 .name = name,
157 .qualifier = qualifier,
158 );
159
160 return &this->public;
161 }
162