/*
* $Id: irr_notify.h,v 1.8 2002/10/17 19:41:44 ljb Exp $
*/
#ifndef _IRR_NOTIFY_H
#define _IRR_NOTIFY_H
#include <stdio.h>
#include <sys/types.h>
#include <hdr_comm.h>
#include <config.h>
#include <pipeline_defs.h>
/* RFC 2769 RPS-DIST: offset from UTC, used in creating timestamps */
#define UTC_OFFSET "+04:00"
#define newline_remove(p) if (*((p) + strlen ((p)) - 1) == '\n') \
*((p) + strlen ((p)) - 1) = '\0'
/* char storage size for notify and forward addr's */
#define MAX_ADDR_SIZE 5000
/* max number of open file handles */
#define MAX_HDLS 200
/* related to MAX_HDLS, MAX_NDX_SIZE gives the max
* number of file hdl's a list may have. Should
* always be same as MAX_HDLS
*/
#define MAX_NDX_SIZE 200
/* Idenify the 3 different notify response types */
enum NOTIFY_T {
NOTIFY_RESPONSE, FORWARD_RESPONSE, SENDER_RESPONSE
};
/* transaction outcome from IRRd */
#define _SUCCESS '1'
#define _NET_ERROR '2'
#define _NOOP '3'
#define _SKIP '4'
/* SKIP_RESULT object ok, skip because of error semantics */
/* USER_ERROR means a syntax, auth, ... error occured.
* SKIP_ERROR menas the trans was skipped but there were
* no user errors.
*/
enum SERVER_RES {
SUCCESS_RESULT = 01,
SKIP_RESULT = 02,
IRRD_ERROR_RESULT = 04,
INTERNAL_ERROR_RESULT = 010,
NOOP_RESULT = 020,
USER_ERROR = 040,
NULL_SUBMISSION = 0100
};
typedef struct _irrd_result_t {
enum SERVER_RES svr_res;
char *err_msg;
char *op;
char *obj_type;
char *obj_key;
char *keycertfn;
char *source;
long offset;
u_int hdr_fields;
struct _irrd_result_t *next;
} irrd_result_t;
typedef struct _ret_info_t {
irrd_result_t *first;
irrd_result_t *last;
} ret_info_t;
typedef struct _nfile_t {
FILE *fp;
char *fname;
} nfile_t;
/* temp file name for notification files */
extern char tempfname[];
/* Sender response text */
extern const char SENDER_HEADER[];
extern const char FORWARD_HEADER[];
extern const char NOTIFY_HEADER[];
extern const char DIAG_HEADER[];
extern const char MAIL_HEADERS[];
extern const char WEB_UPDATE[];
extern const char RESPONSE_FOOTER[];
extern const char SENDER_OP_FAILED[];
extern const char SENDER_OP_SUCCESS[];
extern const char SENDER_OP_NOOP[];
extern const char NULL_SUBMISSION_MSG[];
extern const char SENDER_NET_ERROR[];
extern const char SENDER_SKIP_RESULT[];
extern const char INTERNAL_ERROR[];
extern const char ERROR_TAG[];
extern const char DEL_NO_EXIST_MSG[];
extern const char MAINT_NO_EXIST_MSG[];
extern const char AUTHFAIL_MSG[];
extern const char NEW_MNT_ERROR_MSG[];
extern const char NEW_MNT_ERROR_MSG_2[];
extern const char DEL_MNT_ERROR_MSG[];
extern const char DEL_MNT_ERROR_MSG_2[];
extern const char BAD_OVERRIDE_MSG[];
extern const char UNKNOWN_USER_MSG[];
extern const char PREV_OBJ_MSG[];
extern const char NOTIFY_REPL_MSG[];
extern const char NOTIFY_DEL_MSG[];
extern const char NOTIFY_ADD_MSG[];
extern const char MSG_SEPERATOR[];
extern const char FORWARD_REPL_MSG[];
extern const char FORWARD_DEL_MSG[];
extern const char FORWARD_ADD_MSG[];
/* globals */
extern char notify_addrs[];
extern char *nnext;
extern int nndx[];
extern int num_notify;
extern char forward_addrs[];
extern char *fnext;
extern int fndx[];
extern int num_forward;
extern char sender_addrs[];
extern char *snext;
extern int sndx[];
extern int num_sender;
extern nfile_t msg_hdl[];
extern int num_hdls;
/* function prototypes */
void notify (trace_t *, char *, FILE *, int,
int, int, char *, int, char *, int, char *, char *, char *,
char *, long, FILE *, char *);
void send_notifies (trace_t *, int, FILE *, int);
int present_in_list (char *, char *, char *);
void build_notify_responses (trace_t *, char *, FILE *, trans_info_t *,
irrd_result_t *, char *, int, int);
/* util.c */
char *dup_single_token (char *);
int is_valid_op (char *);
int chk_hdr_flds (u_int);
int get_list_members (char *, char *, char **);
void remove_sender (char *, char *, char **);
u_int int_type_field (char *, trans_info_t *);
u_int list_members_field (char *, trans_info_t *);
u_int dup_token_field (char *, trans_info_t *);
u_int is_from_field (char *, trans_info_t *);
u_int is_maint_no_exist_field (char *, trans_info_t *);
int put_transaction_code (trace_t *, irrd_result_t *, char *);
int put_transaction_code_new (trace_t *, irrd_result_t *, char *);
int is_keycert_obj (irrd_result_t *);
void update_pgp_ring (trace_t *, irrd_result_t *, char *);
void update_pgp_ring_new (trace_t *, irrd_result_t *, char *);
void skip_transaction (FILE *, long *);
void chk_email_fields (trans_info_t *);
int update_trans_outcome_list (trace_t *, ret_info_t *, trans_info_t *, long ,
enum SERVER_RES, char *);
void reinit_return_list (trace_t *, ret_info_t *, enum SERVER_RES);
int pick_off_header_info (trace_t *, FILE *, int, ret_info_t *, int *);
#include <irrd_ops.h>
#endif /* _IRR_NOTIFY_H */
syntax highlighted by Code2HTML, v. 0.9.1