summaryrefslogtreecommitdiffstats
path: root/net/x25/x25_in.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-11-28 03:58:46 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-11-28 03:58:46 +0000
commitb63ad0882a16a5d28003e57f2b0b81dee3fb322b (patch)
tree0a343ce219e2b8b38a5d702d66032c57b83d9720 /net/x25/x25_in.c
parenta9d7bff9a84dba79609a0002e5321b74c4d64c64 (diff)
Merge with 2.4.0-test11.
Diffstat (limited to 'net/x25/x25_in.c')
-rw-r--r--net/x25/x25_in.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/net/x25/x25_in.c b/net/x25/x25_in.c
index 5110d327a..bcb5f1cf4 100644
--- a/net/x25/x25_in.c
+++ b/net/x25/x25_in.c
@@ -16,8 +16,10 @@
* X.25 001 Jonathan Naylor Started coding.
* X.25 002 Jonathan Naylor Centralised disconnection code.
* New timer architecture.
- * mar/20/00 Daniela Squassoni Disabling/enabling of facilities
+ * 2000-03-20 Daniela Squassoni Disabling/enabling of facilities
* negotiation.
+ * 2000-11-10 Henner Eisen Check and reset for out-of-sequence
+ * i-frames.
*/
#include <linux/config.h>
@@ -216,7 +218,8 @@ static int x25_state3_machine(struct sock *sk, struct sk_buff *skb, int frametyp
case X25_DATA: /* XXX */
sk->protinfo.x25->condition &= ~X25_COND_PEER_RX_BUSY;
- if (!x25_validate_nr(sk, nr)) {
+ if ((ns!=sk->protinfo.x25->vr) ||
+ !x25_validate_nr(sk, nr)) {
x25_clear_queues(sk);
x25_write_internal(sk, X25_RESET_REQUEST);
x25_start_t22timer(sk);
@@ -357,4 +360,14 @@ int x25_process_rx_frame(struct sock *sk, struct sk_buff *skb)
return queued;
}
+int x25_backlog_rcv(struct sock *sk, struct sk_buff *skb)
+{
+ int queued;
+
+ queued = x25_process_rx_frame(sk,skb);
+ if(!queued) kfree_skb(skb);
+
+ return 0;
+}
+
#endif