projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[SK_BUFF]: Introduce skb_reset_network_header(skb)
[powerpc.git]
/
net
/
x25
/
x25_dev.c
diff --git
a/net/x25/x25_dev.c
b/net/x25/x25_dev.c
index
47b68a3
..
94fd12f
100644
(file)
--- a/
net/x25/x25_dev.c
+++ b/
net/x25/x25_dev.c
@@
-1,8
+1,8
@@
/*
* X.25 Packet Layer release 002
*
/*
* X.25 Packet Layer release 002
*
- * This is ALPHA test software. This code may break your machine, randomly fail to work with new
- * releases, misbehave and/or generally screw up. It might even work.
+ * This is ALPHA test software. This code may break your machine, randomly fail to work with new
+ * releases, misbehave and/or generally screw up. It might even work.
*
* This code REQUIRES 2.1.15 or higher
*
*
* This code REQUIRES 2.1.15 or higher
*
@@
-31,7
+31,7
@@
static int x25_receive_data(struct sk_buff *skb, struct x25_neigh *nb)
unsigned int lci;
frametype = skb->data[2];
unsigned int lci;
frametype = skb->data[2];
-
lci = ((skb->data[0] << 8) & 0xF00) + ((skb->data[1] << 0) & 0x0FF);
+ lci = ((skb->data[0] << 8) & 0xF00) + ((skb->data[1] << 0) & 0x0FF);
/*
* LCI of zero is always for us, and its always a link control
/*
* LCI of zero is always for us, and its always a link control
@@
-56,6
+56,7
@@
static int x25_receive_data(struct sk_buff *skb, struct x25_neigh *nb)
sk_add_backlog(sk, skb);
}
bh_unlock_sock(sk);
sk_add_backlog(sk, skb);
}
bh_unlock_sock(sk);
+ sock_put(sk);
return queued;
}
return queued;
}
@@
-66,9
+67,18
@@
static int x25_receive_data(struct sk_buff *skb, struct x25_neigh *nb)
return x25_rx_call_request(skb, nb, lci);
/*
return x25_rx_call_request(skb, nb, lci);
/*
- * Its not a Call Request, nor is it a control frame.
- *
Let caller throw it away.
+ * Its not a Call Request, nor is it a control frame.
+ *
Can we forward it?
*/
*/
+
+ if (x25_forward_data(lci, nb, skb)) {
+ if (frametype == X25_CLEAR_CONFIRMATION) {
+ x25_clear_forward_by_lci(lci);
+ }
+ kfree_skb(skb);
+ return 1;
+ }
+
/*
x25_transmit_clear_request(nb, lci, 0x0D);
*/
/*
x25_transmit_clear_request(nb, lci, 0x0D);
*/
@@
-181,7
+191,7
@@
void x25_send_frame(struct sk_buff *skb, struct x25_neigh *nb)
{
unsigned char *dptr;
{
unsigned char *dptr;
- skb
->nh.raw = skb->data
;
+ skb
_reset_network_header(skb)
;
switch (nb->dev->type) {
case ARPHRD_X25:
switch (nb->dev->type) {
case ARPHRD_X25: