Navigation


Changeset 778:003df4a9ade2 in freeDiameter for libfdproto/dictionary.c


Ignore:
Timestamp:
Jan 22, 2012, 12:11:34 AM (12 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
Message:

Added two new interfaces on Zach requests http://lists.freediameter.net/pipermail/help/2012-January/000312.html and http://lists.freediameter.net/pipermail/help/2012-January/000311.html

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libfdproto/dictionary.c

    r770 r778  
    18121812}
    18131813
     1814
     1815int fd_dict_delete(struct dict_object * obj)
     1816{
     1817        int i;
     1818        struct dictionary * dict;
     1819        int ret=0;
     1820       
     1821        /* check params */
     1822        CHECK_PARAMS( verify_object(obj) && obj->dico);
     1823        dict = obj->dico;
     1824
     1825        /* Lock the dictionary for change */
     1826        CHECK_POSIX(  pthread_rwlock_wrlock(&dict->dict_lock)  );
     1827       
     1828        /* check the object is not sentinel for another list */
     1829        for (i=0; i<NB_LISTS_PER_OBJ; i++) {
     1830                if (!_OBINFO(obj).haslist[i] && !(FD_IS_LIST_EMPTY(&obj->list[i]))) {
     1831                        /* There are children, this is not good */
     1832                        ret = EINVAL;
     1833                        TRACE_DEBUG (FULL, "Cannot delete object, list %d not empty:", i);
     1834                        #if 0
     1835                        dump_list(&obj->list[i], 0,0,0);
     1836                        #endif
     1837                        break;
     1838                }
     1839        }
     1840       
     1841        /* ok, now destroy the object */
     1842        if (!ret)
     1843                destroy_object(obj);
     1844       
     1845        /* Unlock */
     1846        CHECK_POSIX(  pthread_rwlock_unlock(&dict->dict_lock)  );
     1847       
     1848        return ret;
     1849}
     1850
     1851
    18141852int fd_dict_search ( struct dictionary * dict, enum dict_object_type type, int criteria, void * what, struct dict_object **result, int retval )
    18151853{
Note: See TracChangeset for help on using the changeset viewer.