blob: 6ed0da80cdca1e72d01d380c8b8b83acf05acb90 [file] [log] [blame]
/*
* Copyright (C) 1995, 1997-1999, 2002 Jeffrey A. Uphoff
* Major rewrite by Olaf Kirch, Dec. 1996.
*
* NSM for Linux.
*/
#include <netinet/in.h>
/*
* Primary information structure.
*/
struct notify_list {
mon mon; /* Big honkin' NSM structure. */
in_port_t port; /* port number for callback */
short int times; /* Counter used for various things. */
int state; /* For storing notified state for callbacks. */
char *dns_name; /* used for matching incoming
* NOTIFY requests */
struct notify_list *next; /* Linked list forward pointer. */
struct notify_list *prev; /* Linked list backward pointer. */
uint32_t xid; /* XID of MS_NOTIFY RPC call */
time_t when; /* notify: timeout for re-xmit */
};
typedef struct notify_list notify_list;
/*
* Global Variables
*/
extern notify_list * rtnl; /* Run-time notify list */
extern notify_list * notify; /* Pending RPC calls */
/*
* List-handling functions
*/
extern notify_list * nlist_new(char *, char *, int);
extern void nlist_insert(notify_list **, notify_list *);
extern void nlist_remove(notify_list **, notify_list *);
extern void nlist_insert_timer(notify_list **, notify_list *);
extern notify_list * nlist_clone(notify_list *);
extern void nlist_free(notify_list **, notify_list *);
extern void nlist_kill(notify_list **);
extern notify_list * nlist_gethost(notify_list *, char *, int);
/*
* List-handling macros.
* THESE INHERIT INFORMATION FROM PREVIOUSLY-DEFINED MACROS.
* (So don't change their order unless you study them first!)
*/
#define NL_NEXT(L) ((L)->next)
#define NL_FIRST NL_NEXT
#define NL_PREV(L) ((L)->prev)
#define NL_DATA(L) ((L)->mon)
#define NL_STATE(L) ((L)->state)
#define NL_TIMES(L) ((L)->times)
#define NL_MON_ID(L) (NL_DATA((L)).mon_id)
#define NL_PRIV(L) (NL_DATA((L)).priv)
#define NL_MON_NAME(L) (NL_MON_ID((L)).mon_name)
#define NL_MY_ID(L) (NL_MON_ID((L)).my_id)
#define NL_MY_NAME(L) (NL_MY_ID((L)).my_name)
#define NL_MY_PROC(L) (NL_MY_ID((L)).my_proc)
#define NL_MY_PROG(L) (NL_MY_ID((L)).my_prog)
#define NL_MY_VERS(L) (NL_MY_ID((L)).my_vers)
#define NL_WHEN(L) ((L)->when)