| /********************************************************************* | |
| * | |
| * Filename: irias_object.h | |
| * Version: | |
| * Description: | |
| * Status: Experimental. | |
| * Author: Dag Brattli <dagb@cs.uit.no> | |
| * Created at: Thu Oct 1 22:49:50 1998 | |
| * Modified at: Wed Dec 15 11:20:57 1999 | |
| * Modified by: Dag Brattli <dagb@cs.uit.no> | |
| * | |
| * Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved. | |
| * | |
| * This program is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU General Public License as | |
| * published by the Free Software Foundation; either version 2 of | |
| * the License, or (at your option) any later version. | |
| * | |
| * Neither Dag Brattli nor University of Tromsø admit liability nor | |
| * provide warranty for any of this software. This material is | |
| * provided "AS-IS" and at no charge. | |
| * | |
| ********************************************************************/ | |
| #ifndef LM_IAS_OBJECT_H | |
| #define LM_IAS_OBJECT_H | |
| #include <net/irda/irda.h> | |
| #include <net/irda/irqueue.h> | |
| /* LM-IAS Attribute types */ | |
| #define IAS_MISSING 0 | |
| #define IAS_INTEGER 1 | |
| #define IAS_OCT_SEQ 2 | |
| #define IAS_STRING 3 | |
| /* Object ownership of attributes (user or kernel) */ | |
| #define IAS_KERNEL_ATTR 0 | |
| #define IAS_USER_ATTR 1 | |
| /* | |
| * LM-IAS Object | |
| */ | |
| struct ias_object { | |
| irda_queue_t q; /* Must be first! */ | |
| magic_t magic; | |
| char *name; | |
| int id; | |
| hashbin_t *attribs; | |
| }; | |
| /* | |
| * Values used by LM-IAS attributes | |
| */ | |
| struct ias_value { | |
| __u8 type; /* Value description */ | |
| __u8 owner; /* Managed from user/kernel space */ | |
| int charset; /* Only used by string type */ | |
| int len; | |
| /* Value */ | |
| union { | |
| int integer; | |
| char *string; | |
| __u8 *oct_seq; | |
| } t; | |
| }; | |
| /* | |
| * Attributes used by LM-IAS objects | |
| */ | |
| struct ias_attrib { | |
| irda_queue_t q; /* Must be first! */ | |
| int magic; | |
| char *name; /* Attribute name */ | |
| struct ias_value *value; /* Attribute value */ | |
| }; | |
| struct ias_object *irias_new_object(char *name, int id); | |
| void irias_insert_object(struct ias_object *obj); | |
| int irias_delete_object(struct ias_object *obj); | |
| int irias_delete_attrib(struct ias_object *obj, struct ias_attrib *attrib, | |
| int cleanobject); | |
| void __irias_delete_object(struct ias_object *obj); | |
| void irias_add_integer_attrib(struct ias_object *obj, char *name, int value, | |
| int user); | |
| void irias_add_string_attrib(struct ias_object *obj, char *name, char *value, | |
| int user); | |
| void irias_add_octseq_attrib(struct ias_object *obj, char *name, __u8 *octets, | |
| int len, int user); | |
| int irias_object_change_attribute(char *obj_name, char *attrib_name, | |
| struct ias_value *new_value); | |
| struct ias_object *irias_find_object(char *name); | |
| struct ias_attrib *irias_find_attrib(struct ias_object *obj, char *name); | |
| struct ias_value *irias_new_string_value(char *string); | |
| struct ias_value *irias_new_integer_value(int integer); | |
| struct ias_value *irias_new_octseq_value(__u8 *octseq , int len); | |
| struct ias_value *irias_new_missing_value(void); | |
| void irias_delete_value(struct ias_value *value); | |
| extern struct ias_value irias_missing; | |
| extern hashbin_t *irias_objects; | |
| #endif |