FLG_MSG_TARGET for direct target addressing

This commit is contained in:
Karsten Keil 2005-05-12 10:24:08 +00:00
parent fbd7e82890
commit b901a8dfcd
6 changed files with 27 additions and 25 deletions

View File

@ -2215,7 +2215,7 @@ dss1_function(mISDNinstance_t *inst, struct sk_buff *skb)
case FLG_MSG_UP:
ret = dss1_fromdown(l3, skb, hh);
break;
case MSG_DIRECT:
case MSG_TO_OWNER:
/* FIXME: must be handled depending on type */
int_errtxt("not implemented yet");
break;

View File

@ -596,7 +596,7 @@ l1_function(mISDNinstance_t *inst, struct sk_buff *skb)
case FLG_MSG_UP:
ret = l1from_down(l1, skb, hh);
break;
case MSG_DIRECT:
case MSG_TO_OWNER:
/* FIXME: must be handled depending on type */
int_errtxt("not implemented yet");
break;

View File

@ -2035,7 +2035,7 @@ l2_function(mISDNinstance_t *inst, struct sk_buff *skb)
case FLG_MSG_UP:
ret = l2from_down(l2, skb, hh);
break;
case MSG_DIRECT:
case MSG_TO_OWNER:
/* FIXME: must be handled depending on type */
int_errtxt("not implemented yet");
break;

View File

@ -160,29 +160,30 @@ get_nextlayer(mISDNstack_t *st, u_int addr)
if (core_debug & DEBUG_CORE_FUNC)
printk(KERN_DEBUG "%s: st(%08x) addr(%08x)\n", __FUNCTION__, st->id, addr);
switch(addr & MSG_DIR_MASK) {
case FLG_MSG_DOWN:
if (addr & FLG_MSG_CLONED) {
} else
layer -= LAYER_ID_INC;
break;
case FLG_MSG_UP:
layer += LAYER_ID_INC;
break;
case MSG_DIRECT:
break;
default: /* broadcast */
int_errtxt("st(%08x) addr(%08x) wrong address", st->id, addr);
return(NULL);
}
if (!(addr & FLG_MSG_TARGET)) {
switch(addr & MSG_DIR_MASK) {
case FLG_MSG_DOWN:
if (addr & FLG_MSG_CLONED) {
} else
layer -= LAYER_ID_INC;
break;
case FLG_MSG_UP:
layer += LAYER_ID_INC;
break;
case MSG_TO_OWNER:
break;
default: /* broadcast */
int_errtxt("st(%08x) addr(%08x) wrong address", st->id, addr);
return(NULL);
}
}
if ((layer < 0) || (layer > MAX_LAYER_NR)) {
int_errtxt("st(%08x) addr(%08x) layer %d out of range", st->id, addr, layer);
return(NULL);
}
inst = st->i_array[layer];
/* more checks, refcnt locking */
/* maybe more checks */
return(inst);
}
@ -292,7 +293,7 @@ mISDN_queue_message(mISDNinstance_t *inst, u_int aflag, struct sk_buff *skb)
if (core_debug & DEBUG_CORE_FUNC)
printk(KERN_DEBUG "%s(%08x, %x, prim(%x))\n", __FUNCTION__,
inst->id, aflag, hh->prim);
if (aflag && ((aflag & MSG_DIR_MASK) == MSG_DIRECT)) {
if (aflag & FLG_MSG_TARGET) {
id = aflag;
} else {
id = (inst->id & INST_ID_MASK) | aflag;

View File

@ -1225,7 +1225,7 @@ dte_function(mISDNinstance_t *inst, struct sk_buff *skb)
case FLG_MSG_UP:
ret = dte_from_down(l3, skb, hh);
break;
case MSG_DIRECT:
case MSG_TO_OWNER:
/* FIXME: must be handled depending on type */
int_errtxt("not implemented yet");
break;

View File

@ -457,14 +457,15 @@
#define FLG_MSG_DOWN 0x01000000
#define FLG_MSG_UP 0x02000000
#define FLG_MSG_CLONED 0x04000000
#define FLG_MSG_TARGET 0x04000000
#define FLG_MSG_CLONED 0x08000000
#define FLG_CHILD_STACK 0x10000000
#define FLG_CLONE_STACK 0x20000000
#define FLG_INSTANCE 0x40000000
#define FLG_MSG_TAGGED 0x80000000
#define MSG_DIR_MASK 0x03000000
#define MSG_BROADCAST 0x03000000
#define MSG_DIRECT 0x00000000
#define MSG_TO_OWNER 0x00000000
#define CHILD_ID_INC 0x00010000
#define CHILD_ID_MAX 0x10FF0000