Asterisk Code erweitern aber wie??

swaesch

Neuer User
Mitglied seit
12 Aug 2005
Beiträge
110
Punkte für Reaktionen
0
Punkte
0
Mit pri debug span 1 bekomme ich folgende Ausgabe:

Code:
1 < Protocol Discriminator: Q.931 (8)  len=38
1 < Call Ref: len= 1 (reference 1/0x1) (Originator)
1 < Message type: SETUP (5)

Nun möchte ich meinem Asterisk eine weiter Variable hinzufügen, die die Länge der Call Reference beinhaltet.

Möchte damit eine Unterscheidung zwischen ISDN Basisanschluß und Primärmultiplexanschluß bewirken.

Hat jemand Informationen, wie man sich am besten in den Asterisk Code einarbeitet, bzw. wie man am schnellsten die benötigte Stelle findet an der man etwas drehen will??


EDIT:

Hab jetzt in den Sourcen von libpri-1.2.3 was gefunden:

Datei: q931.c Zeile 2260

Code:
pri_message(pri, "%c Protocol Discriminator: %s (%d)  len=%d\n", c, disc2str(h->pd), h->pd, len);
pri_message(pri, "%c Call Ref: len=%2d (reference %d/0x%X) (%s)\n", c, [b]h->crlen[/b], q931_cr(h) & 0x7FFF, q931_cr(h) & 0x7FFF, (h->crv[0] & 0x80) ? "Terminator" : "Originator");


bzw. Zeile 2040
Code:
static inline int q931_cr(q931_h *h)
{
	int cr = 0;
	int x;
	if (h->crlen > 3) {
		pri_error(NULL, "Call Reference Length Too long: %d\n", h->crlen);
		return -1;
	}
	switch (h->crlen) {
		case 2: 
			for (x=0;x<h->crlen;x++) {
				cr <<= 8;
				cr |= h->crv[x];
			}
			break;
		case 1:
			cr = h->crv[0];
			if (cr & 0x80) {
				cr &= ~0x80;
				cr |= 0x8000;
			}
			break;
		default:
			pri_error(NULL, "Call Reference Length not supported: %d\n", h->crlen);
	}
	return cr;
}

Für mich ist hier der Inhalt von h->crlen interessant, nur habe ich hier wiederum nur einen Hinweis auf dies:
void q931_dump(struct pri *pri, q931_h *h, int len, int txrx)
 
Zuletzt bearbeitet:
Wozu brauchst Du die Unterscheidung? Wie es jetzt im Sourcecode zu ändern ist kann ich nicht sagen, aber sicher geht es auch einfacher ...
 
Die Unterscheidung will ich dafür nutzen, dass ich Anrufe ohne Nummer von einem Primärmultiplexanschluß direkt abweise oder per Voicemail abhandle.

Will hiermit eine besser Unterscheidung treffen wen ich abweise, wegen lässtigen Anrufen von Callcentern.


Einfacher ist ja gut und recht, aber den einzigen Unterschied, den ich zwischen den beiden Anschlußvarianten gefunden habe ist nun mal die Call Reference Length.

Diese ist beim Basisanschluß 1 Byte(len=1) und beim Primärmultiplexanschluß 2Byte (len=2)
 
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,977
Mitglieder
378,565
Neuestes Mitglied
BenGradish