asterisk/pbx/dundi-parser.h
Luigi Rizzo 7f8ecd2cd3 make the 'name' and 'value' fields in ast_variable const char *
This prevents modifying the strings in the stored variables, 
and catched a few instances where this was actually done.

Given the differences between trunk and 1.4 (and the fact that this
is effectively an API change) it is better to fix 1.4 independently.
These are

chan_sip.c::sip_register()
chan_skinny.c:: near line 2847
config.c:: near line 1774
logger.c::make_components()
res_adsi.c:: near line 1049

I may have missed some instances for modules that do not build here.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-14 13:18:40 +00:00

89 lines
3.3 KiB
C

/*
* Distributed Universal Number Discovery (DUNDi)
*
* Copyright (C) 2004 - 2005, Digium Inc.
*
* Written by Mark Spencer <markster@digium.com>
*
* This program is Free Software distributed under the terms of
* of the GNU General Public License.
*/
#ifndef _DUNDI_PARSER_H
#define _DUNDI_PARSER_H
#include "asterisk/dundi.h"
#include "asterisk/aes.h"
#define DUNDI_MAX_STACK 512
#define DUNDI_MAX_ANSWERS 100
struct dundi_ies {
dundi_eid *eids[DUNDI_MAX_STACK + 1];
int eid_direct[DUNDI_MAX_STACK + 1];
dundi_eid *reqeid;
int eidcount;
char *called_context;
char *called_number;
struct dundi_answer *answers[DUNDI_MAX_ANSWERS + 1];
struct dundi_hint *hint;
int anscount;
int ttl;
int version;
int expiration;
int unknowncmd;
unsigned char *pubkey;
int cause;
char *q_dept;
char *q_org;
char *q_locality;
char *q_stateprov;
char *q_country;
char *q_email;
char *q_phone;
char *q_ipaddr;
char *causestr;
unsigned char *encsharedkey;
unsigned char *encsig;
unsigned long keycrc32;
struct dundi_encblock *encblock;
int enclen;
int cbypass;
};
struct dundi_ie_data {
int pos;
unsigned char buf[8192];
};
/* Choose a different function for output */
extern void dundi_set_output(void (*output)(const char *data));
/* Choose a different function for errors */
extern void dundi_set_error(void (*output)(const char *data));
extern void dundi_showframe(struct dundi_hdr *fhi, int rx, struct sockaddr_in *sin, int datalen);
extern const char *dundi_ie2str(int ie);
extern int dundi_ie_append_raw(struct dundi_ie_data *ied, unsigned char ie, void *data, int datalen);
extern int dundi_ie_append_addr(struct dundi_ie_data *ied, unsigned char ie, struct sockaddr_in *sin);
extern int dundi_ie_append_int(struct dundi_ie_data *ied, unsigned char ie, unsigned int value);
extern int dundi_ie_append_short(struct dundi_ie_data *ied, unsigned char ie, unsigned short value);
extern int dundi_ie_append_str(struct dundi_ie_data *ied, unsigned char ie, char *str);
extern int dundi_ie_append_eid(struct dundi_ie_data *ied, unsigned char ie, dundi_eid *eid);
extern int dundi_ie_append_cause(struct dundi_ie_data *ied, unsigned char ie, unsigned char cause, char *desc);
extern int dundi_ie_append_hint(struct dundi_ie_data *ied, unsigned char ie, unsigned short flags, char *data);
extern int dundi_ie_append_answer(struct dundi_ie_data *ied, unsigned char ie, dundi_eid *eid, unsigned char protocol, unsigned short flags, unsigned short weight, char *desc);
extern int dundi_ie_append_encdata(struct dundi_ie_data *ied, unsigned char ie, unsigned char *iv, void *data, int datalen);
extern int dundi_ie_append_byte(struct dundi_ie_data *ied, unsigned char ie, unsigned char dat);
extern int dundi_ie_append(struct dundi_ie_data *ied, unsigned char ie);
extern int dundi_parse_ies(struct dundi_ies *ies, unsigned char *data, int datalen);
extern char *dundi_eid_to_str(char *s, int maxlen, dundi_eid *eid);
extern char *dundi_eid_to_str_short(char *s, int maxlen, dundi_eid *eid);
extern int dundi_str_to_eid(dundi_eid *eid, const char *s);
extern int dundi_str_short_to_eid(dundi_eid *eid, const char *s);
extern int dundi_eid_zero(dundi_eid *eid);
extern int dundi_eid_cmp(dundi_eid *eid1, dundi_eid *eid2);
extern char *dundi_flags2str(char *s, int maxlen, int flags);
extern char *dundi_hint2str(char *s, int maxlen, int flags);
#endif