aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--include/tinyrad.h7
-rw-r--r--lib/libtinyrad/libtinyrad.sym1
-rw-r--r--lib/libtinyrad/lproto.c31
3 files changed, 39 insertions, 0 deletions
diff --git a/include/tinyrad.h b/include/tinyrad.h
index 1583b44..3e3a224 100644
--- a/include/tinyrad.h
+++ b/include/tinyrad.h
@@ -755,6 +755,13 @@ tinyrad_oid_values(
755#pragma mark protocol prototypes 755#pragma mark protocol prototypes
756 756
757int 757int
758tinyrad_attr_list_add(
759 TinyRadAttrList * list,
760 const char * attr_name,
761 TinyRadBinValue * attr_value );
762
763
764int
758tinyrad_attr_list_initialize( 765tinyrad_attr_list_initialize(
759 TinyRad * tr, 766 TinyRad * tr,
760 TinyRadAttrList ** listp ); 767 TinyRadAttrList ** listp );
diff --git a/lib/libtinyrad/libtinyrad.sym b/lib/libtinyrad/libtinyrad.sym
index bb3e036..4f121a3 100644
--- a/lib/libtinyrad/libtinyrad.sym
+++ b/lib/libtinyrad/libtinyrad.sym
@@ -93,6 +93,7 @@ tinyrad_oid_init
93tinyrad_oid_values 93tinyrad_oid_values
94# 94#
95# protocol functions 95# protocol functions
96tinyrad_attr_list_add
96tinyrad_attr_list_initialize 97tinyrad_attr_list_initialize
97tinyrad_htonll 98tinyrad_htonll
98tinyrad_ntohll 99tinyrad_ntohll
diff --git a/lib/libtinyrad/lproto.c b/lib/libtinyrad/lproto.c
index bb18960..481de93 100644
--- a/lib/libtinyrad/lproto.c
+++ b/lib/libtinyrad/lproto.c
@@ -161,6 +161,37 @@ tinyrad_pckt_buff_realloc(
161#pragma mark attribute list functions 161#pragma mark attribute list functions
162 162
163int 163int
164tinyrad_attr_list_add(
165 TinyRadAttrList * list,
166 const char * attr_name,
167 TinyRadBinValue * attr_value )
168{
169 TinyRadDictAttr * attr;
170 TinyRadAttrValues * attrvals;
171 int rc;
172
173 assert(list != NULL);
174 assert(attr_name != NULL);
175 assert(attr_value != NULL);
176
177 // lookup attribute
178 if ((attr = tinyrad_dict_attr_lookup(list->dict, attr_name, NULL)) == NULL)
179 return(TRAD_EATTRIBUTE);
180
181 // lookup existing or create new attribute value
182 if ((attrvals = tinyrad_attr_vals_lookup(list, NULL, attr->oid)) == NULL)
183 if ((rc = tinyrad_attr_list_add_vals(list, &attrvals, attr->oid)) != TRAD_SUCCESS)
184 return(rc);
185
186 // add binval to attrvals
187 if ((rc = tinyrad_attr_vals_add_binval(attrvals, attr_value)) != TRAD_SUCCESS)
188 return(rc);
189
190 return(TRAD_SUCCESS);
191}
192
193
194int
164tinyrad_attr_list_add_vals( 195tinyrad_attr_list_add_vals(
165 TinyRadAttrList * list, 196 TinyRadAttrList * list,
166 TinyRadAttrValues ** avp, 197 TinyRadAttrValues ** avp,