Previous Next Contents

3.2 Functions supplied by database modules

Each module must provide 7 functions to the generic pwdb interface. They are registered with the generic interface via a structure of the following form:

struct _pwdb_module {
    pwdb_type type;                    /* type of database (code) */
    const char *name;                  /* type of database (text) */
    const char *class;                 /* class of database (user/group) */

    /* FUNCTIONS: used to access the relevant database */

    int (*locate)(const char *name, const int id, const struct pwdb **p);
    int (*request)(const char *entry_name, const struct pwdb **p);
    int (*replace)(const char *name, const int id, const struct pwdb **p);
    int (*delete)(const char *name, const int id, const struct pwdb **p);
    int (*support)(const char *entry_name);
    int (*flags)(pwdb_flag *flags);
    int (*cleanup)(int code);
};

For the functions above taking a name and an id entry, the application may choose to leave one unspecified with the following defaults:

PWDB_NAME_UNKNOWN

just look at the id field

PWDB_ID_UNKNOWN

just look at the name field

In the case that the application supplies neither the name or the id, the module functions will try to obtain the relevant information from the argument pwdb structure.

It is legal for both the name and id to be specified. In this case they must both match an entry in the database to satisfy one of the above function calls. If both values are supplied and there is no entry in the database which matches them, PWDB_BAD_REQUEST is returned.

The structure is registered via an entry in the modules list (see pwdb_module.c).


Previous Next Contents