home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / KERNEL-S / V1.0 / PATCH7.GZ / patch7
Encoding:
Text File  |  1994-04-06  |  3.3 KB  |  115 lines

  1. diff -u --recursive v1.0.6/linux/Makefile linux/Makefile
  2. --- v1.0.6/linux/Makefile    Fri Mar 18 10:21:30 1994
  3. +++ linux/Makefile    Wed Apr  6 13:13:31 1994
  4. @@ -1,6 +1,6 @@
  5.  VERSION = 1
  6.  PATCHLEVEL = 0
  7. -SUBLEVEL = 6
  8. +SUBLEVEL = 7
  9.  
  10.  all:    Version zImage
  11.  
  12. diff -u --recursive --new-file v1.0.6/linux/net/inet/tcp.c linux/net/inet/tcp.c
  13. --- v1.0.6/linux/net/inet/tcp.c    Fri Mar 18 10:21:35 1994
  14. +++ linux/net/inet/tcp.c    Wed Apr  6 13:13:35 1994
  15. @@ -3404,6 +3404,16 @@
  16.          release_sock(sk);
  17.          return(0);
  18.  
  19. +    case TCP_SYN_RECV:
  20. +        if (th->syn) {
  21. +            /* Probably a retransmitted syn */
  22. +            printk("syn while in TCP_SYN_RECV\n");
  23. +            kfree_skb(skb, FREE_READ);
  24. +            release_sock(sk);
  25. +            return(0);
  26. +        }
  27. +
  28. +
  29.      default:
  30.          if (!tcp_sequence(sk, th, len, opt, saddr,dev)) {
  31.              kfree_skb(skb, FREE_READ);
  32. diff -u --recursive --new-file v1.0.6/linux/net/inet/icmp.c linux/net/inet/icmp.c
  33. --- v1.0.6/linux/net/inet/icmp.c    Tue Mar  1 18:51:41 1994
  34. +++ linux/net/inet/icmp.c    Wed Apr  6 13:13:33 1994
  35. @@ -285,6 +285,65 @@
  36.  }
  37.  
  38.  
  39. +/* Handle ICMP Timestamp requests. */
  40. +static void
  41. +icmp_timestamp(struct icmphdr *icmph, struct sk_buff *skb, struct device *dev,
  42. +      unsigned long saddr, unsigned long daddr, int len,
  43. +      struct options *opt)
  44. +{
  45. +  struct icmphdr *icmphr;
  46. +  struct sk_buff *skb2;
  47. +  int size, offset;
  48. +  unsigned long *timeptr, midtime;
  49. +  extern struct timeval xtime;            /* kernel/time.c */
  50. +
  51. +  size = sizeof(struct sk_buff) + dev->hard_header_len + 64 + len;
  52. +  if (! (skb2 = alloc_skb(size, GFP_ATOMIC))) {
  53. +    skb->sk = NULL;
  54. +    kfree_skb(skb, FREE_READ);
  55. +    return;
  56. +  }
  57. +  skb2->sk = NULL;
  58. +  skb2->mem_addr = skb2;
  59. +  skb2->mem_len = size;
  60. +  skb2->free = 1;
  61. +
  62. +  /* Build Layer 2-3 headers for message back to source */
  63. +  offset = ip_build_header(skb2, daddr, saddr, &dev, IPPROTO_ICMP, opt, len, 
  64. +                skb->ip_hdr->tos, 255);
  65. +  if (offset < 0) {
  66. +    printk("ICMP: Could not build IP Header for ICMP TIMESTAMP Response\n");
  67. +    kfree_skb(skb2, FREE_WRITE);
  68. +    skb->sk = NULL;
  69. +    kfree_skb(skb, FREE_READ);
  70. +    return;
  71. +  }
  72. +
  73. +  /* Re-adjust length according to actual IP header size. */
  74. +  skb2->len = offset + len;
  75. +
  76. +  /* Build ICMP_TIMESTAMP Response message. */
  77. +  icmphr = (struct icmphdr *) ((char *) (skb2 + 1) + offset);
  78. +  memcpy((char *) icmphr, (char *) icmph, len);
  79. +  icmphr->type = ICMP_TIMESTAMPREPLY;
  80. +  icmphr->code = icmphr->checksum = 0;
  81. +
  82. +  /* fill in the current time as ms since midnight UT: */
  83. +  midtime = (xtime.tv_sec % 86400) * 1000 + xtime.tv_usec / 1000;
  84. +  timeptr = (unsigned long *) (icmphr + 1);
  85. +  /* the originate timestamp (timeptr [0]) is still in the copy: */
  86. +  timeptr [1] = timeptr [2] = htonl(midtime);
  87. +
  88. +  icmphr->checksum = ip_compute_csum((unsigned char *) icmphr, len);
  89. +
  90. +  /* Ship it out - free it when done */
  91. +  ip_queue_xmit((struct sock *) NULL, dev, skb2, 1);
  92. +
  93. +  skb->sk = NULL;
  94. +  kfree_skb(skb, FREE_READ);
  95. +}
  96. +
  97. +
  98.  /* Handle the ICMP INFORMATION REQUEST. */
  99.  static void
  100.  icmp_info(struct icmphdr *icmph, struct sk_buff *skb, struct device *dev,
  101. @@ -397,6 +456,13 @@
  102.          icmp_echo(icmph, skb1, dev, saddr, daddr, len, opt);
  103.          return 0;
  104.      case ICMP_ECHOREPLY:
  105. +        skb1->sk = NULL;
  106. +        kfree_skb(skb1, FREE_READ);
  107. +        return(0);
  108. +    case ICMP_TIMESTAMP:
  109. +        icmp_timestamp(icmph, skb1, dev, saddr, daddr, len, opt);
  110. +        return 0;
  111. +    case ICMP_TIMESTAMPREPLY:
  112.          skb1->sk = NULL;
  113.          kfree_skb(skb1, FREE_READ);
  114.          return(0);
  115.