Author: adwol                        Date: Sat Dec  3 22:45:40 2011 GMT
Module: packages                      Tag: HEAD
---- Log message:
- added support for 802.1Q tagging (vlans) and IPv6
- release 6

---- Files affected:
packages/libdnet:
   libdnet.spec (1.18 -> 1.19) , libdnet-ip6.patch (NONE -> 1.1)  (NEW), 
libdnet-vlan.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: packages/libdnet/libdnet.spec
diff -u packages/libdnet/libdnet.spec:1.18 packages/libdnet/libdnet.spec:1.19
--- packages/libdnet/libdnet.spec:1.18  Fri Jul  9 12:09:42 2010
+++ packages/libdnet/libdnet.spec       Sat Dec  3 23:45:35 2011
@@ -7,12 +7,14 @@
 Summary(pl.UTF-8):     Interfejs do niektórych niskopoziomowych funkcji 
sieciowych
 Name:          libdnet
 Version:       1.11
-Release:       5
+Release:       6
 License:       BSD
 Group:         Libraries
 Source0:       http://dl.sourceforge.net/libdnet/%{name}-%{version}.tar.gz
 # Source0-md5: 04c394ed8e1e7fc455456e79e908916d
 Patch0:                %{name}-python.patch
+Patch1:                %{name}-vlan.patch
+Patch2:                %{name}-ip6.patch
 URL:           http://libdnet.sourceforge.net/
 BuildRequires: autoconf >= 2.53
 BuildRequires: automake
@@ -91,6 +93,8 @@
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
+%patch2 -p1
 
 # invalid lvalues, force regeneration from .pyx
 rm python/dnet.c
@@ -155,6 +159,10 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.19  2011/12/03 22:45:35  adwol
+- added support for 802.1Q tagging (vlans) and IPv6
+- release 6
+
 Revision 1.18  2010/07/09 10:09:42  arekm
 - release 5
 

================================================================
Index: packages/libdnet/libdnet-ip6.patch
diff -u /dev/null packages/libdnet/libdnet-ip6.patch:1.1
--- /dev/null   Sat Dec  3 23:45:40 2011
+++ packages/libdnet/libdnet-ip6.patch  Sat Dec  3 23:45:35 2011
@@ -0,0 +1,201 @@
+diff -ruN libdnet-1.11.orig/test/dnet/Makefile.am 
libdnet-1.11/test/dnet/Makefile.am
+--- libdnet-1.11.orig/test/dnet/Makefile.am    2004-05-04 23:20:11.000000000 
+0200
++++ libdnet-1.11/test/dnet/Makefile.am 2011-12-03 23:05:24.898192382 +0100
+@@ -5,7 +5,7 @@
+ sbin_PROGRAMS = dnet
+ 
+ dnet_SOURCES = addr.c arp.c aton.c aton.h dnet.c eth.c fw.c hex.c \
+-      icmp.c intf.c ip.c mod.h rand.c route.c send.c tcp.c udp.c
++      icmp.c intf.c ip.c ip6.c mod.h rand.c route.c send.c tcp.c udp.c
+ 
+ man_MANS = dnet.8
+ 
+diff -ruN libdnet-1.11.orig/test/dnet/Makefile.in 
libdnet-1.11/test/dnet/Makefile.in
+--- libdnet-1.11.orig/test/dnet/Makefile.in    2006-01-19 09:24:46.000000000 
+0100
++++ libdnet-1.11/test/dnet/Makefile.in 2011-12-03 23:05:24.899192576 +0100
+@@ -106,7 +106,7 @@
+ sbin_PROGRAMS = dnet
+ 
+ dnet_SOURCES = addr.c arp.c aton.c aton.h dnet.c eth.c fw.c hex.c \
+-      icmp.c intf.c ip.c mod.h rand.c route.c send.c tcp.c udp.c
++      icmp.c intf.c ip.c ip6.c mod.h rand.c route.c send.c tcp.c udp.c
+ 
+ 
+ man_MANS = dnet.8
+@@ -123,8 +123,9 @@
+ 
+ am_dnet_OBJECTS = addr.$(OBJEXT) arp.$(OBJEXT) aton.$(OBJEXT) \
+       dnet.$(OBJEXT) eth.$(OBJEXT) fw.$(OBJEXT) hex.$(OBJEXT) \
+-      icmp.$(OBJEXT) intf.$(OBJEXT) ip.$(OBJEXT) rand.$(OBJEXT) \
+-      route.$(OBJEXT) send.$(OBJEXT) tcp.$(OBJEXT) udp.$(OBJEXT)
++      icmp.$(OBJEXT) intf.$(OBJEXT) ip.$(OBJEXT) ip6.$(OBJEXT) \
++      rand.$(OBJEXT) route.$(OBJEXT) send.$(OBJEXT) tcp.$(OBJEXT) \
++      udp.$(OBJEXT)
+ dnet_OBJECTS = $(am_dnet_OBJECTS)
+ dnet_DEPENDENCIES = $(top_builddir)/src/libdnet.la
+ dnet_LDFLAGS =
+diff -ruN libdnet-1.11.orig/test/dnet/aton.c libdnet-1.11/test/dnet/aton.c
+--- libdnet-1.11.orig/test/dnet/aton.c 2002-10-14 17:42:10.000000000 +0200
++++ libdnet-1.11/test/dnet/aton.c      2011-12-03 23:06:18.852669377 +0100
+@@ -26,6 +26,8 @@
+ 
+       if (strcmp(string, "ip") == 0)
+               *type = htons(ETH_TYPE_IP);
++      else if (strcmp(string, "ip6") == 0 || strcmp(string, "ipv6") == 0)
++              *type = htons(ETH_TYPE_IPV6);
+       else if (strcmp(string, "arp") == 0)
+               *type = htons(ETH_TYPE_ARP);
+       else {
+diff -ruN libdnet-1.11.orig/test/dnet/dnet.8 libdnet-1.11/test/dnet/dnet.8
+--- libdnet-1.11.orig/test/dnet/dnet.8 2002-04-01 09:11:34.000000000 +0200
++++ libdnet-1.11/test/dnet/dnet.8      2011-12-03 23:05:24.899192576 +0100
+@@ -88,6 +88,21 @@
+ .Ar protocol
+ may be specified by name, or as a hex, octal, or decimal number.
+ .It Xo
++.Nm ip6
++.Op Nm tc Ar num
++.Op Nm flow Ar num
++.Op Nm next Ar protocol
++.Op Nm hlim Ar num
++.Op Nm src Ar host
++.Bk -words
++.Op Nm dst Ar dst
++.Ek
++.Xc
++Prepend the data read from standard input with an IPv6 header on
++standard output. The 
++.Ar protocol
++may be specified by name, or as a hex, octal, or decimal number.
++.It Xo
+ .Nm icmp
+ .Op Nm type Ar num
+ .Op Nm code Ar num
+diff -ruN libdnet-1.11.orig/test/dnet/dnet.c libdnet-1.11/test/dnet/dnet.c
+--- libdnet-1.11.orig/test/dnet/dnet.c 2004-05-04 23:20:40.000000000 +0200
++++ libdnet-1.11/test/dnet/dnet.c      2011-12-03 23:05:24.899192576 +0100
+@@ -28,6 +28,7 @@
+ extern struct mod mod_eth;
+ extern struct mod mod_arp;
+ extern struct mod mod_ip;
++extern struct mod mod_ip6;
+ extern struct mod mod_icmp;
+ extern struct mod mod_tcp;
+ extern struct mod mod_udp;
+@@ -37,8 +38,9 @@
+ extern struct mod mod_route;
+ 
+ static struct mod *modules[] = {
+-      &mod_addr, &mod_hex, &mod_rand, &mod_eth, &mod_arp, &mod_ip, &mod_icmp,
+-      &mod_tcp, &mod_udp, &mod_send, &mod_fw, &mod_intf, &mod_route, NULL
++      &mod_addr, &mod_hex, &mod_rand, &mod_eth, &mod_arp, &mod_ip, &mod_ip6,
++      &mod_icmp, &mod_tcp, &mod_udp, &mod_send, &mod_fw, &mod_intf,
++      &mod_route, NULL
+ };
+ 
+ static void
+diff -ruN libdnet-1.11.orig/test/dnet/ip6.c libdnet-1.11/test/dnet/ip6.c
+--- libdnet-1.11.orig/test/dnet/ip6.c  1970-01-01 01:00:00.000000000 +0100
++++ libdnet-1.11/test/dnet/ip6.c       2011-12-03 23:05:24.900192770 +0100
+@@ -0,0 +1,101 @@
++/*
++ * ip6.c
++ *
++ */
++
++#include "config.h"
++
++#include <sys/types.h>
++
++#include <err.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <time.h>
++#include <unistd.h>
++
++#include "dnet.h"
++#include "aton.h"
++#include "mod.h"
++
++void
++ip6_usage(void)
++{
++      fprintf(stderr, "Usage: dnet ip6 [tc|flow|next|hlim|src|dst "
++          "<value>] ... \n");
++      exit(1);
++}
++
++int
++ip6_main(int argc, char *argv[])
++{
++      uint8_t tc = 0, next, hlim = IP6_HLIM_MAX;
++      uint32_t flow = 0;
++      struct addr addr;
++      struct ip6_addr src, dst;
++      u_char *p, buf[IP6_LEN_MAX];    /* XXX */
++      char *name, *value;
++      int c, len;
++      
++      srand(time(NULL));
++
++      next = rand() & 0xff;
++      memset(buf, 0, sizeof buf);
++
++      for (c = 1; c + 1 < argc; c += 2) {
++              name = argv[c];
++              value = argv[c + 1];
++              
++              if (strcmp(name, "tc") == 0)
++                      tc = atoi(value);
++              else if (strcmp(name, "flow") == 0)
++                      flow = atoi(value);
++              else if (strcmp(name, "hlim") == 0)
++                      hlim = atoi(value);
++              else if (strcmp(name, "next") == 0) {
++                      if (proto_aton(value, &next) < 0)
++                              ip6_usage();
++              } else if (strcmp(name, "src") == 0) {
++                      if (addr_aton(value, &addr) < 0 || addr.addr_type != 
ADDR_TYPE_IP6)
++                              ip6_usage();
++                      memcpy(&src, &addr.addr_ip6, IP6_ADDR_LEN);
++              } else if (strcmp(name, "dst") == 0) {
++                      if (addr_aton(value, &addr) < 0 || addr.addr_type != 
ADDR_TYPE_IP6)
++                              ip6_usage();
++                      memcpy(&dst, &addr.addr_ip6, IP6_ADDR_LEN);
++              } else
++                      ip_usage();
++      }
++      argc -= c;
++      argv += c;
++      
++      if (argc != 0)
++              ip6_usage();
++      
++      if (isatty(STDIN_FILENO))
++              errx(1, "can't read IPv6 payload from tty");
++      
++      p = buf + IP6_HDR_LEN;
++      len = sizeof(buf) - (p - buf);
++      
++      while ((c = read(STDIN_FILENO, p, len)) > 0) {
++              p += c;
++              len -= c;
++      }
++      len = p - buf;
++
++      ip6_pack_hdr(buf, tc, flow, len - IP6_HDR_LEN, next, hlim, src, dst);
++
++      ip6_checksum(buf, len);
++      
++      if (write(STDOUT_FILENO, buf, len) != len)
++              err(1, "write");
++
++      return (0);
++}
++
++struct mod mod_ip6 = {
++      "ip6",
++      MOD_TYPE_ENCAP,
++      ip6_main
++};

================================================================
Index: packages/libdnet/libdnet-vlan.patch
diff -u /dev/null packages/libdnet/libdnet-vlan.patch:1.1
--- /dev/null   Sat Dec  3 23:45:40 2011
+++ packages/libdnet/libdnet-vlan.patch Sat Dec  3 23:45:35 2011
@@ -0,0 +1,97 @@
+diff -ruN libdnet-1.11.orig/test/dnet/aton.c libdnet-1.11/test/dnet/aton.c
+--- libdnet-1.11.orig/test/dnet/aton.c 2002-10-14 17:42:10.000000000 +0200
++++ libdnet-1.11/test/dnet/aton.c      2011-12-03 23:15:33.472366712 +0100
+@@ -222,3 +222,15 @@
+       }
+       return (u - buf);
+ }
++
++int
++vid_aton(char *string, uint16_t *vid)
++{
++      u_int i;
++      
++      /* XXX */
++      if (sscanf(string, "%i", &i) != 1 || i > 0xffff)
++              return (-1);
++      *vid = htons(i & 0xffff);
++      return (0);
++}
+diff -ruN libdnet-1.11.orig/test/dnet/dnet.8 libdnet-1.11/test/dnet/dnet.8
+--- libdnet-1.11.orig/test/dnet/dnet.8 2002-04-01 09:11:34.000000000 +0200
++++ libdnet-1.11/test/dnet/dnet.8      2011-12-03 23:10:04.055399746 +0100
+@@ -42,6 +42,7 @@
+ .Op Nm type Ar type 
+ .Op Nm src Ar mac
+ .Op Nm dst Ar mac
++.Op Nm vid Ar vlan_id
+ .Xc
+ Prepend the data read from standard input with an Ethernet header on
+ standard output. The Ethernet
+diff -ruN libdnet-1.11.orig/test/dnet/eth.c libdnet-1.11/test/dnet/eth.c
+--- libdnet-1.11.orig/test/dnet/eth.c  2002-02-08 08:43:53.000000000 +0100
++++ libdnet-1.11/test/dnet/eth.c       2011-12-03 23:16:31.263588754 +0100
+@@ -23,7 +23,7 @@
+ void
+ eth_usage(void)
+ {
+-      fprintf(stderr, "Usage: dnet eth [type|src|dst <value>] ... \n");
++      fprintf(stderr, "Usage: dnet eth [type|src|dst|vid <value>] ... \n");
+       exit(1);
+ }
+ 
+@@ -31,10 +31,11 @@
+ eth_main(int argc, char *argv[])
+ {
+       struct eth_hdr *eth;
++      uint16_t type, vid;
+       struct addr addr;
+-      u_char *p, buf[ETH_LEN_MAX];    /* XXX */
++      u_char *p, buf[ETH_LEN_MAX + 4];        /* XXX */
+       char *name, *value;
+-      int c, len;
++      int c, len, is_tagged = 0;
+ 
+       eth = (struct eth_hdr *)buf;
+       memset(eth, 0, sizeof(*eth));
+@@ -45,8 +46,13 @@
+               value = argv[c + 1];
+ 
+               if (strcmp(name, "type") == 0) {
+-                      if (type_aton(value, &eth->eth_type) < 0)
++                      if (type_aton(value, &type) < 0)
+                               eth_usage();
++
++                      if (is_tagged)
++                              memmove(((uint8_t *)&eth->eth_type) + 4, &type, 
sizeof(uint16_t));
++                      else
++                              eth->eth_type = type;
+               } else if (strcmp(name, "src") == 0) {
+                       if (addr_aton(value, &addr) < 0)
+                               eth_usage();
+@@ -55,6 +61,14 @@
+                       if (addr_aton(value, &addr) < 0)
+                               eth_usage();
+                       memcpy(&eth->eth_dst, &addr.addr_eth, ETH_ADDR_LEN);
++              } else if (strcmp(name, "vid") == 0) {
++                      if (is_tagged)
++                              eth_usage();
++                      memmove(buf + ETH_HDR_LEN - ETH_TYPE_LEN + 4, buf + 
ETH_HDR_LEN - ETH_TYPE_LEN, ETH_LEN_MAX - ETH_HDR_LEN + ETH_TYPE_LEN);
++                      eth->eth_type = htons(ETH_TYPE_8021Q);
++                      vid_aton(value, &vid);
++                      memmove(buf + ETH_HDR_LEN, &vid, sizeof(uint16_t));
++                      is_tagged = 1;
+               } else
+                       eth_usage();
+       }
+@@ -67,8 +81,8 @@
+       if (isatty(STDIN_FILENO))
+               errx(1, "can't read Ethernet payload from tty");
+       
+-      p = buf + ETH_HDR_LEN;
+-      len = sizeof(buf) - (p - buf);
++      p = buf + ETH_HDR_LEN + (is_tagged ? 4 : 0);
++      len = sizeof(buf) - (p - buf) - (is_tagged ? 0 : 4);
+       
+       while ((c = read(STDIN_FILENO, p, len)) > 0) {
+               p += c;
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/libdnet/libdnet.spec?r1=1.18&r2=1.19&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to