/* *Adjustframesize.
*/ switch (frametype) { case X25_CALL_REQUEST:
len += 1 + X25_ADDR_LEN + X25_MAX_FAC_LEN + X25_MAX_CUD_LEN; break; case X25_CALL_ACCEPTED: /* fast sel with no restr on resp */ if (x25->facilities.reverse & 0x80) {
len += 1 + X25_MAX_FAC_LEN + X25_MAX_CUD_LEN;
} else {
len += 1 + X25_MAX_FAC_LEN;
} break; case X25_CLEAR_REQUEST: case X25_RESET_REQUEST:
len += 2; break; case X25_RR: case X25_RNR: case X25_REJ: case X25_CLEAR_CONFIRMATION: case X25_INTERRUPT_CONFIRMATION: case X25_RESET_CONFIRMATION: break; default:
pr_err("invalid frame type %02X\n", frametype); return;
}
if ((skb = alloc_skb(len, GFP_ATOMIC)) == NULL) return;
/* fast select with no restriction on response allowscalluserdata.Userlandmust
ensure it is ours and not theirs */ if(x25->facilities.reverse & 0x80) {
skb_put_data(skb,
x25->calluserdata.cuddata,
x25->calluserdata.cudlength);
}
x25->calluserdata.cudlength = 0; break;
case X25_CLEAR_CONFIRMATION: case X25_INTERRUPT_CONFIRMATION: case X25_RESET_CONFIRMATION:
dptr = skb_put(skb, 1);
*dptr = frametype; break;
}
x25_transmit_link(skb, x25->neighbour);
}
/* *UnpickthecontentsofthepassedX.25PacketLayerframe.
*/ int x25_decode(struct sock *sk, struct sk_buff *skb, int *ns, int *nr, int *q, int *d, int *m)
{ struct x25_sock *x25 = x25_sk(sk); unsignedchar *frame;
if (!pskb_may_pull(skb, X25_STD_MIN_LEN)) return X25_ILLEGAL;
frame = skb->data;
*ns = *nr = *q = *d = *m = 0;
switch (frame[2]) { case X25_CALL_REQUEST: case X25_CALL_ACCEPTED: case X25_CLEAR_REQUEST: case X25_CLEAR_CONFIRMATION: case X25_INTERRUPT: case X25_INTERRUPT_CONFIRMATION: case X25_RESET_REQUEST: case X25_RESET_CONFIRMATION: case X25_RESTART_REQUEST: case X25_RESTART_CONFIRMATION: case X25_REGISTRATION_REQUEST: case X25_REGISTRATION_CONFIRMATION: case X25_DIAGNOSTIC: return frame[2];
}
if (x25->neighbour->extended) { if (frame[2] == X25_RR ||
frame[2] == X25_RNR ||
frame[2] == X25_REJ) { if (!pskb_may_pull(skb, X25_EXT_MIN_LEN)) return X25_ILLEGAL;
frame = skb->data;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.