Add ISDN display ie text handling options to chan_dahdi.conf.
The display ie handling can be controlled independently in the send and receive directions with the following options: * Block display text data. * Use display text in SETUP/CONNECT messages for name. * Use display text for COLP name updates (FACILITY/NOTIFY as appropriate). * Pass arbitrary display text during a call. Sent in INFORMATION messages. Received from any message that the display text was not used as a name. If the display options are not set then the options default to legacy behavior. The arbitrary display text is exchanged between bridged channels using the AST_FRAME_TEXT frame type. To send display text from the dialplan use the SendText() application when the arbitrary display text option is enabled. JIRA SWP-2688 JIRA ABE-2693 git-svn-id: http://svn.digium.com/svn/asterisk/trunk@306396 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
87b28286de
commit
6df0404cd7
3
CHANGES
3
CHANGES
|
@ -49,6 +49,9 @@ libpri channel driver (chan_dahdi) DAHDI changes
|
|||
--------------------------
|
||||
* Added moh_signaling option to specify what to do when the channel's bridged
|
||||
peer puts the ISDN channel on hold.
|
||||
* Added display_send and display_receive options to control how the display ie
|
||||
is handled. To send display text from the dialplan use the SendText()
|
||||
application when the option is enabled.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
--- Functionality changes from Asterisk 1.6.2 to Asterisk 1.8 ----------------
|
||||
|
|
|
@ -1402,30 +1402,50 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in,
|
|||
}
|
||||
}
|
||||
|
||||
/* Forward HTML stuff */
|
||||
if (single && (f->frametype == AST_FRAME_HTML) && !ast_test_flag64(outgoing, DIAL_NOFORWARDHTML))
|
||||
if (ast_channel_sendhtml(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen) == -1)
|
||||
ast_log(LOG_WARNING, "Unable to send URL\n");
|
||||
|
||||
if (single && ((f->frametype == AST_FRAME_VOICE) || (f->frametype == AST_FRAME_DTMF_BEGIN) || (f->frametype == AST_FRAME_DTMF_END))) {
|
||||
if (ast_write(outgoing->chan, f))
|
||||
ast_log(LOG_WARNING, "Unable to forward voice or dtmf\n");
|
||||
}
|
||||
if (single && (f->frametype == AST_FRAME_CONTROL)) {
|
||||
if ((f->subclass.integer == AST_CONTROL_HOLD) ||
|
||||
(f->subclass.integer == AST_CONTROL_UNHOLD) ||
|
||||
(f->subclass.integer == AST_CONTROL_VIDUPDATE) ||
|
||||
(f->subclass.integer == AST_CONTROL_SRCUPDATE)) {
|
||||
ast_verb(3, "%s requested special control %d, passing it to %s\n", in->name, f->subclass.integer, outgoing->chan->name);
|
||||
ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
} else if (f->subclass.integer == AST_CONTROL_CONNECTED_LINE) {
|
||||
if (ast_channel_connected_line_macro(in, outgoing->chan, f, 0, 1)) {
|
||||
ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
if (single) {
|
||||
switch (f->frametype) {
|
||||
case AST_FRAME_HTML:
|
||||
/* Forward HTML stuff */
|
||||
if (!ast_test_flag64(outgoing, DIAL_NOFORWARDHTML)
|
||||
&& ast_channel_sendhtml(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen) == -1) {
|
||||
ast_log(LOG_WARNING, "Unable to send URL\n");
|
||||
}
|
||||
} else if (f->subclass.integer == AST_CONTROL_REDIRECTING) {
|
||||
if (ast_channel_redirecting_macro(in, outgoing->chan, f, 0, 1)) {
|
||||
ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
break;
|
||||
case AST_FRAME_VOICE:
|
||||
case AST_FRAME_IMAGE:
|
||||
case AST_FRAME_TEXT:
|
||||
case AST_FRAME_DTMF_BEGIN:
|
||||
case AST_FRAME_DTMF_END:
|
||||
if (ast_write(outgoing->chan, f)) {
|
||||
ast_log(LOG_WARNING, "Unable to forward frametype: %d\n",
|
||||
f->frametype);
|
||||
}
|
||||
break;
|
||||
case AST_FRAME_CONTROL:
|
||||
switch (f->subclass.integer) {
|
||||
case AST_CONTROL_HOLD:
|
||||
case AST_CONTROL_UNHOLD:
|
||||
case AST_CONTROL_VIDUPDATE:
|
||||
case AST_CONTROL_SRCUPDATE:
|
||||
ast_verb(3, "%s requested special control %d, passing it to %s\n", in->name, f->subclass.integer, outgoing->chan->name);
|
||||
ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
break;
|
||||
case AST_CONTROL_CONNECTED_LINE:
|
||||
if (ast_channel_connected_line_macro(in, outgoing->chan, f, 0, 1)) {
|
||||
ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
}
|
||||
break;
|
||||
case AST_CONTROL_REDIRECTING:
|
||||
if (ast_channel_redirecting_macro(in, outgoing->chan, f, 0, 1)) {
|
||||
ast_indicate_data(outgoing->chan, f->subclass.integer, f->data.ptr, f->datalen);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
ast_frfree(f);
|
||||
|
|
|
@ -7334,13 +7334,13 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch
|
|||
continue;
|
||||
}
|
||||
f = ast_read(who);
|
||||
if (!f || (f->frametype == AST_FRAME_CONTROL)) {
|
||||
switch (f ? f->frametype : AST_FRAME_CONTROL) {
|
||||
case AST_FRAME_CONTROL:
|
||||
*fo = f;
|
||||
*rc = who;
|
||||
res = AST_BRIDGE_COMPLETE;
|
||||
goto return_from_bridge;
|
||||
}
|
||||
if (f->frametype == AST_FRAME_DTMF) {
|
||||
case AST_FRAME_DTMF_END:
|
||||
if ((who == c0) && p0->pulsedial) {
|
||||
ast_write(c1, f);
|
||||
} else if ((who == c1) && p1->pulsedial) {
|
||||
|
@ -7351,6 +7351,20 @@ static enum ast_bridge_result dahdi_bridge(struct ast_channel *c0, struct ast_ch
|
|||
res = AST_BRIDGE_COMPLETE;
|
||||
goto return_from_bridge;
|
||||
}
|
||||
break;
|
||||
case AST_FRAME_TEXT:
|
||||
if (who == c0) {
|
||||
ast_write(c1, f);
|
||||
} else {
|
||||
ast_write(c0, f);
|
||||
}
|
||||
break;
|
||||
case AST_FRAME_NULL:
|
||||
break;
|
||||
default:
|
||||
ast_debug(1, "Chan '%s' is discarding frame of frametype:%d\n",
|
||||
who->name, f->frametype);
|
||||
break;
|
||||
}
|
||||
ast_frfree(f);
|
||||
|
||||
|
@ -12333,6 +12347,10 @@ static struct dahdi_pvt *mkintf(int channel, const struct dahdi_chan_conf *conf,
|
|||
ast_copy_string(pris[span].pri.unknownprefix, conf->pri.pri.unknownprefix, sizeof(pris[span].pri.unknownprefix));
|
||||
pris[span].pri.moh_signaling = conf->pri.pri.moh_signaling;
|
||||
pris[span].pri.resetinterval = conf->pri.pri.resetinterval;
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
pris[span].pri.display_flags_send = conf->pri.pri.display_flags_send;
|
||||
pris[span].pri.display_flags_receive = conf->pri.pri.display_flags_receive;
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
|
||||
for (x = 0; x < PRI_MAX_TIMERS; x++) {
|
||||
pris[span].pri.pritimers[x] = conf->pri.pri.pritimers[x];
|
||||
|
@ -16462,6 +16480,53 @@ static void process_echocancel(struct dahdi_chan_conf *confp, const char *data,
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(HAVE_PRI)
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
/*!
|
||||
* \internal
|
||||
* \brief Determine the configured display text options.
|
||||
* \since 1.10
|
||||
*
|
||||
* \param value Configuration value string.
|
||||
*
|
||||
* \return Configured display text option flags.
|
||||
*/
|
||||
static unsigned long dahdi_display_text_option(const char *value)
|
||||
{
|
||||
char *val_str;
|
||||
char *opt_str;
|
||||
unsigned long options;
|
||||
|
||||
options = 0;
|
||||
val_str = ast_strdupa(value);
|
||||
|
||||
for (;;) {
|
||||
opt_str = strsep(&val_str, ",");
|
||||
if (!opt_str) {
|
||||
break;
|
||||
}
|
||||
opt_str = ast_strip(opt_str);
|
||||
if (!*opt_str) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!strcasecmp(opt_str, "block")) {
|
||||
options |= PRI_DISPLAY_OPTION_BLOCK;
|
||||
} else if (!strcasecmp(opt_str, "name_initial")) {
|
||||
options |= PRI_DISPLAY_OPTION_NAME_INITIAL;
|
||||
} else if (!strcasecmp(opt_str, "name_update")) {
|
||||
options |= PRI_DISPLAY_OPTION_NAME_UPDATE;
|
||||
} else if (!strcasecmp(opt_str, "name")) {
|
||||
options |= (PRI_DISPLAY_OPTION_NAME_INITIAL | PRI_DISPLAY_OPTION_NAME_UPDATE);
|
||||
} else if (!strcasecmp(opt_str, "text")) {
|
||||
options |= PRI_DISPLAY_OPTION_TEXT;
|
||||
}
|
||||
}
|
||||
return options;
|
||||
}
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
#endif /* defined(HAVE_PRI) */
|
||||
|
||||
/*! process_dahdi() - ignore keyword 'channel' and similar */
|
||||
#define PROC_DAHDI_OPT_NOCHAN (1 << 0)
|
||||
/*! process_dahdi() - No warnings on non-existing cofiguration keywords */
|
||||
|
@ -17234,6 +17299,12 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
|
|||
#endif /* defined(HAVE_PRI_MWI) */
|
||||
} else if (!strcasecmp(v->name, "append_msn_to_cid_tag")) {
|
||||
confp->pri.pri.append_msn_to_user_tag = ast_true(v->value);
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
} else if (!strcasecmp(v->name, "display_send")) {
|
||||
confp->pri.pri.display_flags_send = dahdi_display_text_option(v->value);
|
||||
} else if (!strcasecmp(v->name, "display_receive")) {
|
||||
confp->pri.pri.display_flags_receive = dahdi_display_text_option(v->value);
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
#endif /* HAVE_PRI */
|
||||
#if defined(HAVE_SS7)
|
||||
} else if (!strcasecmp(v->name, "ss7type")) {
|
||||
|
@ -18150,13 +18221,26 @@ static int dahdi_sendtext(struct ast_channel *c, const char *text)
|
|||
float scont = 0.0;
|
||||
int idx;
|
||||
|
||||
if (!text[0]) {
|
||||
return(0); /* if nothing to send, don't */
|
||||
}
|
||||
idx = dahdi_get_index(c, p, 0);
|
||||
if (idx < 0) {
|
||||
ast_log(LOG_WARNING, "Huh? I don't exist?\n");
|
||||
return -1;
|
||||
}
|
||||
if (!text[0]) return(0); /* if nothing to send, don't */
|
||||
if ((!p->tdd) && (!p->mate)) return(0); /* if not in TDD mode, just return */
|
||||
if ((!p->tdd) && (!p->mate)) {
|
||||
#if defined(HAVE_PRI)
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
ast_mutex_lock(&p->lock);
|
||||
if (dahdi_sig_pri_lib_handles(p->sig)) {
|
||||
sig_pri_sendtext(p->sig_pvt, text);
|
||||
}
|
||||
ast_mutex_unlock(&p->lock);
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
#endif /* defined(HAVE_PRI) */
|
||||
return(0); /* if not in TDD mode, just return */
|
||||
}
|
||||
if (p->mate)
|
||||
buf = ast_malloc(((strlen(text) + 1) * ASCII_BYTES_PER_CHAR) + END_SILENCE_LEN + HEADER_LEN);
|
||||
else
|
||||
|
|
|
@ -4084,6 +4084,31 @@ static void sig_pri_handle_subcmds(struct sig_pri_span *pri, int chanpos, int ev
|
|||
/* Ignore for now. */
|
||||
break;
|
||||
#endif /* defined(HAVE_PRI_MCID) */
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
case PRI_SUBCMD_DISPLAY_TEXT:
|
||||
if (event_id != PRI_EVENT_RING) {
|
||||
/*
|
||||
* This display text was not from a SETUP message. We can do
|
||||
* something with this display text string.
|
||||
*/
|
||||
sig_pri_lock_owner(pri, chanpos);
|
||||
owner = pri->pvts[chanpos]->owner;
|
||||
if (owner) {
|
||||
struct ast_frame f;
|
||||
|
||||
/* Pass the display text to the peer channel. */
|
||||
memset(&f, 0, sizeof(f));
|
||||
f.frametype = AST_FRAME_TEXT;
|
||||
f.subclass.integer = 0;
|
||||
f.offset = 0;
|
||||
f.data.ptr = &subcmd->u.display.text;
|
||||
f.datalen = subcmd->u.display.length + 1;
|
||||
ast_queue_frame(owner, &f);
|
||||
ast_channel_unlock(owner);
|
||||
}
|
||||
}
|
||||
break;
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
default:
|
||||
ast_debug(2,
|
||||
"Unknown call subcommand(%d) in %s event on channel %d/%d on span %d.\n",
|
||||
|
@ -8171,6 +8196,10 @@ int sig_pri_start_pri(struct sig_pri_span *pri)
|
|||
#if defined(HAVE_PRI_MCID)
|
||||
pri_mcid_enable(pri->pri, 1);
|
||||
#endif /* defined(HAVE_PRI_MCID) */
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
pri_display_options_send(pri->pri, pri->display_flags_send);
|
||||
pri_display_options_receive(pri->pri, pri->display_flags_receive);
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
|
||||
pri->resetpos = -1;
|
||||
if (ast_pthread_create_background(&pri->master, NULL, pri_dchannel, pri)) {
|
||||
|
@ -8383,6 +8412,31 @@ void sig_pri_fixup(struct ast_channel *oldchan, struct ast_channel *newchan, str
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
/*!
|
||||
* \brief Send display text.
|
||||
* \since 1.10
|
||||
*
|
||||
* \param p Channel to send text over
|
||||
* \param text Text to send.
|
||||
*
|
||||
* \return Nothing
|
||||
*/
|
||||
void sig_pri_sendtext(struct sig_pri_chan *p, const char *text)
|
||||
{
|
||||
struct pri_subcmd_display_txt display;
|
||||
|
||||
if (p->pri && p->pri->pri) {
|
||||
ast_copy_string(display.text, text, sizeof(display.text));
|
||||
display.length = strlen(display.text);
|
||||
display.char_set = 0;/* unknown(0) */
|
||||
pri_grab(p, p->pri);
|
||||
pri_display_text(p->pri->pri, p->call, &display);
|
||||
pri_rel(p->pri);
|
||||
}
|
||||
}
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
|
||||
#if defined(HAVE_PRI_CCSS)
|
||||
/*!
|
||||
* \brief PRI CC agent initialization.
|
||||
|
|
|
@ -412,6 +412,10 @@ struct sig_pri_span {
|
|||
char unknownprefix[20]; /*!< for unknown dialplans */
|
||||
enum sig_pri_moh_signaling moh_signaling;
|
||||
long resetinterval; /*!< Interval (in seconds) for resetting unused channels */
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
unsigned long display_flags_send; /*!< PRI_DISPLAY_OPTION_xxx flags for display text sending */
|
||||
unsigned long display_flags_receive; /*!< PRI_DISPLAY_OPTION_xxx flags for display text receiving */
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
#if defined(HAVE_PRI_MWI)
|
||||
/*! \brief Active MWI mailboxes */
|
||||
struct sig_pri_mbox mbox[SIG_PRI_MAX_MWI_MAILBOXES];
|
||||
|
@ -576,6 +580,9 @@ int pri_maintenance_bservice(struct pri *pri, struct sig_pri_chan *p, int change
|
|||
#endif /* defined(HAVE_PRI_SERVICE_MESSAGES) */
|
||||
|
||||
void sig_pri_fixup(struct ast_channel *oldchan, struct ast_channel *newchan, struct sig_pri_chan *pchan);
|
||||
#if defined(HAVE_PRI_DISPLAY_TEXT)
|
||||
void sig_pri_sendtext(struct sig_pri_chan *pchan, const char *text);
|
||||
#endif /* defined(HAVE_PRI_DISPLAY_TEXT) */
|
||||
|
||||
int sig_pri_cc_agent_init(struct ast_cc_agent *agent, struct sig_pri_chan *pvt_chan);
|
||||
int sig_pri_cc_agent_start_offer_timer(struct ast_cc_agent *agent);
|
||||
|
|
|
@ -205,7 +205,32 @@
|
|||
; yes or both: both directions
|
||||
;
|
||||
;overlapdial=yes
|
||||
|
||||
; Send/receive ISDN display IE options. The display options are a comma separated
|
||||
; list of the following options:
|
||||
;
|
||||
; block: Do not pass display text data.
|
||||
; Q.SIG: Default for send/receive.
|
||||
; ETSI CPE: Default for send.
|
||||
; name_initial: Use display text in SETUP/CONNECT messages as the party name.
|
||||
; Default for all other modes.
|
||||
; name_update: Use display text in other messages (NOTIFY/FACILITY) for COLP name
|
||||
; update.
|
||||
; name: Combined name_initial and name_update options.
|
||||
; text: Pass any unused display text data as an arbitrary display message
|
||||
; during a call. Sent text goes out in an INFORMATION message.
|
||||
;
|
||||
; * Default is an empty string for legacy behavior.
|
||||
; * The name options are not recommended for Q.SIG since Q.SIG already
|
||||
; supports names.
|
||||
; * The send block is the only recommended setting for CPE mode since Q.931 uses
|
||||
; the display IE only in the network to user direction.
|
||||
;
|
||||
; display_send and display_receive cannot be changed on reload.
|
||||
;
|
||||
;display_send=
|
||||
;display_receive=
|
||||
|
||||
; Allow inband audio (progress) when a call is DISCONNECTed by the far end of a PRI
|
||||
;
|
||||
;inbanddisconnect=yes
|
||||
|
|
|
@ -414,6 +414,7 @@ AST_EXT_LIB_SETUP([PGSQL], [PostgreSQL], [postgres])
|
|||
AST_EXT_LIB_SETUP([POPT], [popt], [popt])
|
||||
AST_EXT_LIB_SETUP([PORTAUDIO], [PortAudio], [portaudio])
|
||||
AST_EXT_LIB_SETUP([PRI], [ISDN PRI], [pri])
|
||||
AST_EXT_LIB_SETUP_DEPENDENT([PRI_DISPLAY_TEXT], [ISDN PRI user display text IE contents during call], [PRI], [pri])
|
||||
AST_EXT_LIB_SETUP_DEPENDENT([PRI_MWI], [ISDN PRI Message Waiting Indication], [PRI], [pri])
|
||||
AST_EXT_LIB_SETUP_DEPENDENT([PRI_MCID], [ISDN PRI Malicious Call ID], [PRI], [pri])
|
||||
AST_EXT_LIB_SETUP_DEPENDENT([PRI_CALL_WAITING], [ISDN PRI call waiting supplementary service], [PRI], [pri])
|
||||
|
@ -1811,6 +1812,7 @@ AST_EXT_LIB_CHECK([POPT], [popt], [poptStrerror], [popt.h])
|
|||
AST_EXT_LIB_CHECK([PORTAUDIO], [portaudio], [Pa_GetDeviceCount], [portaudio.h])
|
||||
|
||||
AST_EXT_LIB_CHECK([PRI], [pri], [pri_connected_line_update], [libpri.h])
|
||||
AST_EXT_LIB_CHECK([PRI_DISPLAY_TEXT], [pri], [pri_display_text], [libpri.h])
|
||||
AST_EXT_LIB_CHECK([PRI_MWI], [pri], [pri_mwi_indicate], [libpri.h])
|
||||
AST_EXT_LIB_CHECK([PRI_MCID], [pri], [pri_mcid_enable], [libpri.h])
|
||||
AST_EXT_LIB_CHECK([PRI_CALL_WAITING], [pri], [pri_connect_ack_enable], [libpri.h])
|
||||
|
|
|
@ -576,6 +576,10 @@
|
|||
library. */
|
||||
#undef HAVE_PRI_CCSS
|
||||
|
||||
/* Define to 1 if you have the ISDN PRI user display text IE contents during
|
||||
call library. */
|
||||
#undef HAVE_PRI_DISPLAY_TEXT
|
||||
|
||||
/* Define to 1 if you have the ISDN PRI hangup fix library. */
|
||||
#undef HAVE_PRI_HANGUP_FIX
|
||||
|
||||
|
@ -819,16 +823,16 @@
|
|||
/* Define to 1 if you have the `strtoq' function. */
|
||||
#undef HAVE_STRTOQ
|
||||
|
||||
/* Define to 1 if `ifr_ifru.ifru_hwaddr' is a member of `struct ifreq'. */
|
||||
/* Define to 1 if `ifr_ifru.ifru_hwaddr' is member of `struct ifreq'. */
|
||||
#undef HAVE_STRUCT_IFREQ_IFR_IFRU_IFRU_HWADDR
|
||||
|
||||
/* Define to 1 if `st_blksize' is a member of `struct stat'. */
|
||||
/* Define to 1 if `st_blksize' is member of `struct stat'. */
|
||||
#undef HAVE_STRUCT_STAT_ST_BLKSIZE
|
||||
|
||||
/* Define to 1 if `cr_uid' is a member of `struct ucred'. */
|
||||
/* Define to 1 if `cr_uid' is member of `struct ucred'. */
|
||||
#undef HAVE_STRUCT_UCRED_CR_UID
|
||||
|
||||
/* Define to 1 if `uid' is a member of `struct ucred'. */
|
||||
/* Define to 1 if `uid' is member of `struct ucred'. */
|
||||
#undef HAVE_STRUCT_UCRED_UID
|
||||
|
||||
/* Define to 1 if you have the mISDN Supplemental Services library. */
|
||||
|
@ -1106,9 +1110,6 @@
|
|||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
|
|
Reference in New Issue