|
Packit |
e9ba0d |
/* -*- mode: c; c-file-style: "openbsd" -*- */
|
|
Packit |
e9ba0d |
/*
|
|
Packit |
e9ba0d |
* Copyright (c) 2015 Vincent Bernat <bernat@luffy.cx>
|
|
Packit |
e9ba0d |
*
|
|
Packit |
e9ba0d |
* Permission to use, copy, modify, and/or distribute this software for any
|
|
Packit |
e9ba0d |
* purpose with or without fee is hereby granted, provided that the above
|
|
Packit |
e9ba0d |
* copyright notice and this permission notice appear in all copies.
|
|
Packit |
e9ba0d |
*
|
|
Packit |
e9ba0d |
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
Packit |
e9ba0d |
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
Packit |
e9ba0d |
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
Packit |
e9ba0d |
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
Packit |
e9ba0d |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
Packit |
e9ba0d |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
Packit |
e9ba0d |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
Packit |
e9ba0d |
*/
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#include <stdlib.h>
|
|
Packit |
e9ba0d |
#include <sys/socket.h>
|
|
Packit |
e9ba0d |
#include <arpa/inet.h>
|
|
Packit |
e9ba0d |
#include <netinet/in.h>
|
|
Packit |
e9ba0d |
#include <check.h>
|
|
Packit |
e9ba0d |
#include "common.h"
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
char filenameprefix[] = "edp_send";
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#ifdef ENABLE_EDP
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
START_TEST (test_send_basic)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
int n;
|
|
Packit |
e9ba0d |
/* Packet we should build:
|
|
Packit |
e9ba0d |
Extreme Discovery Protocol
|
|
Packit |
e9ba0d |
Version: 1
|
|
Packit |
e9ba0d |
Reserved: 0
|
|
Packit |
e9ba0d |
Data length: 74
|
|
Packit |
e9ba0d |
Checksum: 0xde22 [correct]
|
|
Packit |
e9ba0d |
[Good: True]
|
|
Packit |
e9ba0d |
[Bad : False]
|
|
Packit |
e9ba0d |
Sequence number: 0
|
|
Packit |
e9ba0d |
Machine ID type: MAC (0)
|
|
Packit |
e9ba0d |
Machine MAC: 5e:10:8e:e7:84:ad (5e:10:8e:e7:84:ad)
|
|
Packit |
e9ba0d |
Display: "First chassis"
|
|
Packit |
e9ba0d |
Marker 0x99, length 18, type 1 = Display
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Display (1)
|
|
Packit |
e9ba0d |
TLV length: 18
|
|
Packit |
e9ba0d |
Name: First chassis
|
|
Packit |
e9ba0d |
Info: Slot/Port: 1/4, Version: 7.6.4.99
|
|
Packit |
e9ba0d |
Marker 0x99, length 36, type 2 = Info
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Info (2)
|
|
Packit |
e9ba0d |
TLV length: 36
|
|
Packit |
e9ba0d |
Slot: 1
|
|
Packit |
e9ba0d |
Port: 4
|
|
Packit |
e9ba0d |
Virt chassis: 0
|
|
Packit |
e9ba0d |
Reserved: 000000000000
|
|
Packit |
e9ba0d |
Version: 7.6.4 Internal: 99
|
|
Packit |
e9ba0d |
Version: 0x07060463
|
|
Packit |
e9ba0d |
Version (major1): 7
|
|
Packit |
e9ba0d |
Version (major2): 6
|
|
Packit |
e9ba0d |
Version (sustaining): 4
|
|
Packit |
e9ba0d |
Version (internal): 99
|
|
Packit |
e9ba0d |
Connections: FFFFFFFF000000000000000000000000
|
|
Packit |
e9ba0d |
Null
|
|
Packit |
e9ba0d |
Marker 0x99, length 4, type 0 = Null
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Null (0)
|
|
Packit |
e9ba0d |
TLV length: 4
|
|
Packit |
e9ba0d |
*/
|
|
Packit |
e9ba0d |
char pkt1[] = {
|
|
Packit |
e9ba0d |
0x00, 0xe0, 0x2b, 0x00, 0x00, 0x00, 0x5e, 0x10,
|
|
Packit |
e9ba0d |
0x8e, 0xe7, 0x84, 0xad, 0x00, 0x52, 0xaa, 0xaa,
|
|
Packit |
e9ba0d |
0x03, 0x00, 0xe0, 0x2b, 0x00, 0xbb, 0x01, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x4a, 0xde, 0x22, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x5e, 0x10, 0x8e, 0xe7, 0x84, 0xad, 0x99, 0x01,
|
|
Packit |
e9ba0d |
0x00, 0x12, 0x46, 0x69, 0x72, 0x73, 0x74, 0x20,
|
|
Packit |
e9ba0d |
0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x00,
|
|
Packit |
e9ba0d |
0x99, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x07, 0x06, 0x04, 0x63, 0xff, 0xff, 0xff, 0xff,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x04 };
|
|
Packit |
e9ba0d |
struct packet *pkt;
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
/* Populate port and chassis */
|
|
Packit |
e9ba0d |
hardware.h_lport.p_id_subtype = LLDP_PORTID_SUBTYPE_IFNAME;
|
|
Packit |
e9ba0d |
hardware.h_lport.p_id = "Not used";
|
|
Packit |
e9ba0d |
hardware.h_lport.p_id_len = strlen(hardware.h_lport.p_id);
|
|
Packit |
e9ba0d |
hardware.h_lport.p_descr = "Not used";
|
|
Packit |
e9ba0d |
strlcpy(hardware.h_ifname, "eth3", sizeof(hardware.h_ifname));
|
|
Packit |
e9ba0d |
hardware.h_ifindex = 4;
|
|
Packit |
e9ba0d |
chassis.c_id_subtype = LLDP_CHASSISID_SUBTYPE_LLADDR;
|
|
Packit |
e9ba0d |
chassis.c_id = macaddress;
|
|
Packit |
e9ba0d |
chassis.c_id_len = ETHER_ADDR_LEN;
|
|
Packit |
e9ba0d |
chassis.c_name = "First chassis";
|
|
Packit |
e9ba0d |
/* Build packet */
|
|
Packit |
e9ba0d |
n = edp_send(NULL, &hardware);
|
|
Packit |
e9ba0d |
if (n != 0) {
|
|
Packit |
e9ba0d |
fail("unable to build packet");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
if (TAILQ_EMPTY(&pkts)) {
|
|
Packit |
e9ba0d |
fail("no packets sent");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
pkt = TAILQ_FIRST(&pkts);
|
|
Packit |
e9ba0d |
ck_assert_int_eq(pkt->size, sizeof(pkt1));
|
|
Packit |
e9ba0d |
fail_unless(memcmp(pkt->data, pkt1, sizeof(pkt1)) == 0);
|
|
Packit |
e9ba0d |
fail_unless(TAILQ_NEXT(pkt, next) == NULL, "more than one packet sent");
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
END_TEST
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#ifdef ENABLE_DOT1
|
|
Packit |
e9ba0d |
START_TEST (test_send_vlans)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
int n;
|
|
Packit |
e9ba0d |
/* Packets we should build:
|
|
Packit |
e9ba0d |
Extreme Discovery Protocol
|
|
Packit |
e9ba0d |
Version: 1
|
|
Packit |
e9ba0d |
Reserved: 0
|
|
Packit |
e9ba0d |
Data length: 74
|
|
Packit |
e9ba0d |
Checksum: 0xde20 [correct]
|
|
Packit |
e9ba0d |
[Good: True]
|
|
Packit |
e9ba0d |
[Bad : False]
|
|
Packit |
e9ba0d |
Sequence number: 2
|
|
Packit |
e9ba0d |
Machine ID type: MAC (0)
|
|
Packit |
e9ba0d |
Machine MAC: 5e:10:8e:e7:84:ad (5e:10:8e:e7:84:ad)
|
|
Packit |
e9ba0d |
Display: "First chassis"
|
|
Packit |
e9ba0d |
Marker 0x99, length 18, type 1 = Display
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Display (1)
|
|
Packit |
e9ba0d |
TLV length: 18
|
|
Packit |
e9ba0d |
Name: First chassis
|
|
Packit |
e9ba0d |
Info: Slot/Port: 1/4, Version: 7.6.4.99
|
|
Packit |
e9ba0d |
Marker 0x99, length 36, type 2 = Info
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Info (2)
|
|
Packit |
e9ba0d |
TLV length: 36
|
|
Packit |
e9ba0d |
Slot: 1
|
|
Packit |
e9ba0d |
Port: 4
|
|
Packit |
e9ba0d |
Virt chassis: 0
|
|
Packit |
e9ba0d |
Reserved: 000000000000
|
|
Packit |
e9ba0d |
Version: 7.6.4 Internal: 99
|
|
Packit |
e9ba0d |
Version: 0x07060463
|
|
Packit |
e9ba0d |
Version (major1): 7
|
|
Packit |
e9ba0d |
Version (major2): 6
|
|
Packit |
e9ba0d |
Version (sustaining): 4
|
|
Packit |
e9ba0d |
Version (internal): 99
|
|
Packit |
e9ba0d |
Connections: FFFFFFFF000000000000000000000000
|
|
Packit |
e9ba0d |
Null
|
|
Packit |
e9ba0d |
Marker 0x99, length 4, type 0 = Null
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Null (0)
|
|
Packit |
e9ba0d |
TLV length: 4
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
Extreme Discovery Protocol
|
|
Packit |
e9ba0d |
Version: 1
|
|
Packit |
e9ba0d |
Reserved: 0
|
|
Packit |
e9ba0d |
Data length: 102
|
|
Packit |
e9ba0d |
Checksum: 0x28c4 [correct]
|
|
Packit |
e9ba0d |
[Good: True]
|
|
Packit |
e9ba0d |
[Bad : False]
|
|
Packit |
e9ba0d |
Sequence number: 3
|
|
Packit |
e9ba0d |
Machine ID type: MAC (0)
|
|
Packit |
e9ba0d |
Machine MAC: 5e:10:8e:e7:84:ad (5e:10:8e:e7:84:ad)
|
|
Packit |
e9ba0d |
Vlan: ID 157, Name "First VLAN"
|
|
Packit |
e9ba0d |
Marker 0x99, length 27, type 5 = VL
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: VL (5)
|
|
Packit |
e9ba0d |
TLV length: 27
|
|
Packit |
e9ba0d |
Flags: 0x00
|
|
Packit |
e9ba0d |
0... .... = Flags-IP: Not set
|
|
Packit |
e9ba0d |
.000 000. = Flags-reserved: 0x00
|
|
Packit |
e9ba0d |
.... ...0 = Flags-Unknown: Not set
|
|
Packit |
e9ba0d |
Reserved1: 00
|
|
Packit |
e9ba0d |
Vlan ID: 157
|
|
Packit |
e9ba0d |
Reserved2: 00000000
|
|
Packit |
e9ba0d |
IP addr: 0.0.0.0 (0.0.0.0)
|
|
Packit |
e9ba0d |
Name: First VLAN
|
|
Packit |
e9ba0d |
Vlan: ID 1247, Name "Second VLAN"
|
|
Packit |
e9ba0d |
Marker 0x99, length 28, type 5 = VL
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: VL (5)
|
|
Packit |
e9ba0d |
TLV length: 28
|
|
Packit |
e9ba0d |
Flags: 0x00
|
|
Packit |
e9ba0d |
0... .... = Flags-IP: Not set
|
|
Packit |
e9ba0d |
.000 000. = Flags-reserved: 0x00
|
|
Packit |
e9ba0d |
.... ...0 = Flags-Unknown: Not set
|
|
Packit |
e9ba0d |
Reserved1: 00
|
|
Packit |
e9ba0d |
Vlan ID: 1247
|
|
Packit |
e9ba0d |
Reserved2: 00000000
|
|
Packit |
e9ba0d |
IP addr: 0.0.0.0 (0.0.0.0)
|
|
Packit |
e9ba0d |
Name: Second VLAN
|
|
Packit |
e9ba0d |
Vlan: ID 741, Name "Third VLAN"
|
|
Packit |
e9ba0d |
Marker 0x99, length 27, type 5 = VL
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: VL (5)
|
|
Packit |
e9ba0d |
TLV length: 27
|
|
Packit |
e9ba0d |
Flags: 0x00
|
|
Packit |
e9ba0d |
0... .... = Flags-IP: Not set
|
|
Packit |
e9ba0d |
.000 000. = Flags-reserved: 0x00
|
|
Packit |
e9ba0d |
.... ...0 = Flags-Unknown: Not set
|
|
Packit |
e9ba0d |
Reserved1: 00
|
|
Packit |
e9ba0d |
Vlan ID: 741
|
|
Packit |
e9ba0d |
Reserved2: 00000000
|
|
Packit |
e9ba0d |
IP addr: 0.0.0.0 (0.0.0.0)
|
|
Packit |
e9ba0d |
Name: Third VLAN
|
|
Packit |
e9ba0d |
Null
|
|
Packit |
e9ba0d |
Marker 0x99, length 4, type 0 = Null
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Null (0)
|
|
Packit |
e9ba0d |
TLV length: 4
|
|
Packit |
e9ba0d |
*/
|
|
Packit |
e9ba0d |
char pkt1[] = {
|
|
Packit |
e9ba0d |
0x00, 0xe0, 0x2b, 0x00, 0x00, 0x00, 0x5e, 0x10,
|
|
Packit |
e9ba0d |
0x8e, 0xe7, 0x84, 0xad, 0x00, 0x52, 0xaa, 0xaa,
|
|
Packit |
e9ba0d |
0x03, 0x00, 0xe0, 0x2b, 0x00, 0xbb, 0x01, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x4a, 0xde, 0x20, 0x00, 0x02, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x5e, 0x10, 0x8e, 0xe7, 0x84, 0xad, 0x99, 0x01,
|
|
Packit |
e9ba0d |
0x00, 0x12, 0x46, 0x69, 0x72, 0x73, 0x74, 0x20,
|
|
Packit |
e9ba0d |
0x63, 0x68, 0x61, 0x73, 0x73, 0x69, 0x73, 0x00,
|
|
Packit |
e9ba0d |
0x99, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x07, 0x06, 0x04, 0x63, 0xff, 0xff, 0xff, 0xff,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x04 };
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
char pkt2[] = {
|
|
Packit |
e9ba0d |
0x00, 0xe0, 0x2b, 0x00, 0x00, 0x00, 0x5e, 0x10,
|
|
Packit |
e9ba0d |
0x8e, 0xe7, 0x84, 0xad, 0x00, 0x6e, 0xaa, 0xaa,
|
|
Packit |
e9ba0d |
0x03, 0x00, 0xe0, 0x2b, 0x00, 0xbb, 0x01, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x66, 0x28, 0xc4, 0x00, 0x03, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x5e, 0x10, 0x8e, 0xe7, 0x84, 0xad, 0x99, 0x05,
|
|
Packit |
e9ba0d |
0x00, 0x1b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x69,
|
|
Packit |
e9ba0d |
0x72, 0x73, 0x74, 0x20, 0x56, 0x4c, 0x41, 0x4e,
|
|
Packit |
e9ba0d |
0x00, 0x99, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x04,
|
|
Packit |
e9ba0d |
0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20,
|
|
Packit |
e9ba0d |
0x56, 0x4c, 0x41, 0x4e, 0x00, 0x99, 0x05, 0x00,
|
|
Packit |
e9ba0d |
0x1b, 0x00, 0x00, 0x02, 0xe5, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x68, 0x69,
|
|
Packit |
e9ba0d |
0x72, 0x64, 0x20, 0x56, 0x4c, 0x41, 0x4e, 0x00,
|
|
Packit |
e9ba0d |
0x99, 0x00, 0x00, 0x04 };
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
struct packet *pkt;
|
|
Packit |
e9ba0d |
struct lldpd_vlan vlan1, vlan2, vlan3;
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
/* Populate port and chassis */
|
|
Packit |
e9ba0d |
hardware.h_lport.p_id_subtype = LLDP_PORTID_SUBTYPE_IFNAME;
|
|
Packit |
e9ba0d |
hardware.h_lport.p_id = "Not used";
|
|
Packit |
e9ba0d |
hardware.h_lport.p_id_len = strlen(hardware.h_lport.p_id);
|
|
Packit |
e9ba0d |
hardware.h_lport.p_descr = "Not used";
|
|
Packit |
e9ba0d |
strlcpy(hardware.h_ifname, "eth3", sizeof(hardware.h_ifname));
|
|
Packit |
e9ba0d |
hardware.h_ifindex = 4;
|
|
Packit |
e9ba0d |
chassis.c_id_subtype = LLDP_CHASSISID_SUBTYPE_LLADDR;
|
|
Packit |
e9ba0d |
chassis.c_id = macaddress;
|
|
Packit |
e9ba0d |
chassis.c_id_len = ETHER_ADDR_LEN;
|
|
Packit |
e9ba0d |
chassis.c_name = "First chassis";
|
|
Packit |
e9ba0d |
vlan1.v_name = "First VLAN"; vlan1.v_vid = 157;
|
|
Packit |
e9ba0d |
vlan2.v_name = "Second VLAN"; vlan2.v_vid = 1247;
|
|
Packit |
e9ba0d |
vlan3.v_name = "Third VLAN"; vlan3.v_vid = 741;
|
|
Packit |
e9ba0d |
TAILQ_INSERT_TAIL(&hardware.h_lport.p_vlans, &vlan1, v_entries);
|
|
Packit |
e9ba0d |
TAILQ_INSERT_TAIL(&hardware.h_lport.p_vlans, &vlan2, v_entries);
|
|
Packit |
e9ba0d |
TAILQ_INSERT_TAIL(&hardware.h_lport.p_vlans, &vlan3, v_entries);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
/* Build packet */
|
|
Packit |
e9ba0d |
n = edp_send(NULL, &hardware);
|
|
Packit |
e9ba0d |
if (n != 0) {
|
|
Packit |
e9ba0d |
fail("unable to build packet");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
if (TAILQ_EMPTY(&pkts)) {
|
|
Packit |
e9ba0d |
fail("no packets sent");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
pkt = TAILQ_FIRST(&pkts);
|
|
Packit |
e9ba0d |
ck_assert_int_eq(pkt->size, sizeof(pkt1));
|
|
Packit |
e9ba0d |
fail_unless(memcmp(pkt->data, pkt1, sizeof(pkt1)) == 0);
|
|
Packit |
e9ba0d |
pkt = TAILQ_NEXT(pkt, next);
|
|
Packit |
e9ba0d |
if (!pkt) {
|
|
Packit |
e9ba0d |
fail("need one more packet");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
ck_assert_int_eq(pkt->size, sizeof(pkt2));
|
|
Packit |
e9ba0d |
fail_unless(memcmp(pkt->data, pkt2, sizeof(pkt2)) == 0);
|
|
Packit |
e9ba0d |
fail_unless(TAILQ_NEXT(pkt, next) == NULL, "more than two packets sent");
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
END_TEST
|
|
Packit |
e9ba0d |
#endif
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
START_TEST (test_recv_edp)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
char pkt1[] = {
|
|
Packit |
e9ba0d |
0x00, 0xe0, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x04,
|
|
Packit |
e9ba0d |
0x96, 0x05, 0x44, 0x6f, 0x01, 0x44, 0xaa, 0xaa,
|
|
Packit |
e9ba0d |
0x03, 0x00, 0xe0, 0x2b, 0x00, 0xbb, 0x01, 0x00,
|
|
Packit |
e9ba0d |
0x01, 0x3c, 0x05, 0xdf, 0x03, 0x0f, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x04, 0x96, 0x05, 0x44, 0x6f, 0x99, 0x02,
|
|
Packit |
e9ba0d |
0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06,
|
|
Packit |
e9ba0d |
0x04, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x99, 0x01, 0x01, 0x04, 0x6e, 0x65,
|
|
Packit |
e9ba0d |
0x30, 0x35, 0x30, 0x31, 0x73, 0x77, 0x2e, 0x58,
|
|
Packit |
e9ba0d |
0x58, 0x58, 0x58, 0x58, 0x58, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x03, 0x7b, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x80, 0x79, 0x0d, 0xec, 0xff, 0xff,
|
|
Packit |
e9ba0d |
0xff, 0xff, 0x80, 0xa7, 0x8b, 0x24, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x17, 0x08, 0x7e, 0xe5, 0xe2,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0xee, 0xee, 0xee, 0xee, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x02, 0x81, 0xb2, 0x19, 0xf0, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x02, 0x80, 0xa5, 0x67, 0x20, 0xee, 0xee,
|
|
Packit |
e9ba0d |
0xee, 0xee, 0x80, 0xea, 0x8c, 0xac, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0xe0, 0x2b, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0xe0, 0x2b, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x80, 0xa4, 0x86, 0x2c, 0xee, 0xee,
|
|
Packit |
e9ba0d |
0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee,
|
|
Packit |
e9ba0d |
0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0xee, 0xee, 0xee, 0xee, 0x00, 0xe0,
|
|
Packit |
e9ba0d |
0x2b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee,
|
|
Packit |
e9ba0d |
0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0x99, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x04 };
|
|
Packit |
e9ba0d |
/* This is:
|
|
Packit |
e9ba0d |
IEEE 802.3 Ethernet
|
|
Packit |
e9ba0d |
Destination: Extreme-EDP (00:e0:2b:00:00:00)
|
|
Packit |
e9ba0d |
Source: ExtremeN_05:44:6f (00:04:96:05:44:6f)
|
|
Packit |
e9ba0d |
Length: 324
|
|
Packit |
e9ba0d |
Logical-Link Control
|
|
Packit |
e9ba0d |
DSAP: SNAP (0xaa)
|
|
Packit |
e9ba0d |
IG Bit: Individual
|
|
Packit |
e9ba0d |
SSAP: SNAP (0xaa)
|
|
Packit |
e9ba0d |
CR Bit: Command
|
|
Packit |
e9ba0d |
Control field: U, func=UI (0x03)
|
|
Packit |
e9ba0d |
000. 00.. = Command: Unnumbered Information (0x00)
|
|
Packit |
e9ba0d |
.... ..11 = Frame type: Unnumbered frame (0x03)
|
|
Packit |
e9ba0d |
Organization Code: Extreme Networks (0x00e02b)
|
|
Packit |
e9ba0d |
PID: EDP (0x00bb)
|
|
Packit |
e9ba0d |
Extreme Discovery Protocol
|
|
Packit |
e9ba0d |
Version: 1
|
|
Packit |
e9ba0d |
Reserved: 0
|
|
Packit |
e9ba0d |
Data length: 316
|
|
Packit |
e9ba0d |
Checksum: 0xdf05 [correct]
|
|
Packit |
e9ba0d |
[Good: True]
|
|
Packit |
e9ba0d |
[Bad : False]
|
|
Packit |
e9ba0d |
Sequence number: 783
|
|
Packit |
e9ba0d |
Machine ID type: MAC (0)
|
|
Packit |
e9ba0d |
Machine MAC: ExtremeN_05:44:6f (00:04:96:05:44:6f)
|
|
Packit |
e9ba0d |
Info: Slot/Port: 1/1, Version: 7.6.4.0
|
|
Packit |
e9ba0d |
Marker 0x99, length 36, type 2 = Info
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Info (2)
|
|
Packit |
e9ba0d |
TLV length: 36
|
|
Packit |
e9ba0d |
Slot: 1
|
|
Packit |
e9ba0d |
Port: 1
|
|
Packit |
e9ba0d |
Virt chassis: 0
|
|
Packit |
e9ba0d |
Reserved: 000000000000
|
|
Packit |
e9ba0d |
Version: 7.6.4 Internal: 0
|
|
Packit |
e9ba0d |
Version: 0x07060400
|
|
Packit |
e9ba0d |
Version (major1): 7
|
|
Packit |
e9ba0d |
Version (major2): 6
|
|
Packit |
e9ba0d |
Version (sustaining): 4
|
|
Packit |
e9ba0d |
Version (internal): 0
|
|
Packit |
e9ba0d |
Connections: FFFF0000000000000000000000000000
|
|
Packit |
e9ba0d |
Display: "ne0501sw.XXXXXX"
|
|
Packit |
e9ba0d |
Marker 0x99, length 260, type 1 = Display
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Display (1)
|
|
Packit |
e9ba0d |
TLV length: 260
|
|
Packit |
e9ba0d |
Name: ne0501sw.XXXXXX
|
|
Packit |
e9ba0d |
Null
|
|
Packit |
e9ba0d |
Marker 0x99, length 4, type 0 = Null
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Null (0)
|
|
Packit |
e9ba0d |
TLV length: 4
|
|
Packit |
e9ba0d |
*/
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#ifdef ENABLE_DOT1
|
|
Packit |
e9ba0d |
char pkt2[] = {
|
|
Packit |
e9ba0d |
0x00, 0xe0, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x04,
|
|
Packit |
e9ba0d |
0x96, 0x05, 0x44, 0x6f, 0x01, 0x48, 0xaa, 0xaa,
|
|
Packit |
e9ba0d |
0x03, 0x00, 0xe0, 0x2b, 0x00, 0xbb, 0x01, 0x00,
|
|
Packit |
e9ba0d |
0x01, 0x40, 0x73, 0x04, 0x03, 0x10, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x04, 0x96, 0x05, 0x44, 0x6f, 0x99, 0x05,
|
|
Packit |
e9ba0d |
0x00, 0x64, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x65,
|
|
Packit |
e9ba0d |
0x66, 0x61, 0x75, 0x6c, 0x74, 0x00, 0x43, 0x61,
|
|
Packit |
e9ba0d |
0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x61, 0x76,
|
|
Packit |
e9ba0d |
0x65, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65,
|
|
Packit |
e9ba0d |
0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
|
|
Packit |
e9ba0d |
0x20, 0x74, 0x6f, 0x20, 0x6e, 0x76, 0x20, 0x28,
|
|
Packit |
e9ba0d |
0x25, 0x64, 0x29, 0x0a, 0x00, 0x00, 0x4e, 0x6f,
|
|
Packit |
e9ba0d |
0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x20,
|
|
Packit |
e9ba0d |
0x66, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x70, 0x65,
|
|
Packit |
e9ba0d |
0x72, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49,
|
|
Packit |
e9ba0d |
0x6e, 0x73, 0x74, 0x20, 0x25, 0x64, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x99, 0x05, 0x00, 0x64, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x4d, 0x61, 0x63, 0x56, 0x6c, 0x61,
|
|
Packit |
e9ba0d |
0x6e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
|
|
Packit |
e9ba0d |
0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x05,
|
|
Packit |
e9ba0d |
0x00, 0x64, 0x80, 0x00, 0x00, 0x32, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x0a, 0x32, 0x00, 0x3f, 0x41, 0x64,
|
|
Packit |
e9ba0d |
0x6d, 0x69, 0x6e, 0x42, 0x32, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
Packit |
e9ba0d |
0x00, 0x00, 0x99, 0x00, 0x00, 0x04 };
|
|
Packit |
e9ba0d |
/* This is:
|
|
Packit |
e9ba0d |
IEEE 802.3 Ethernet
|
|
Packit |
e9ba0d |
Destination: Extreme-EDP (00:e0:2b:00:00:00)
|
|
Packit |
e9ba0d |
Source: ExtremeN_05:44:6f (00:04:96:05:44:6f)
|
|
Packit |
e9ba0d |
Length: 328
|
|
Packit |
e9ba0d |
Logical-Link Control
|
|
Packit |
e9ba0d |
DSAP: SNAP (0xaa)
|
|
Packit |
e9ba0d |
IG Bit: Individual
|
|
Packit |
e9ba0d |
SSAP: SNAP (0xaa)
|
|
Packit |
e9ba0d |
CR Bit: Command
|
|
Packit |
e9ba0d |
Control field: U, func=UI (0x03)
|
|
Packit |
e9ba0d |
000. 00.. = Command: Unnumbered Information (0x00)
|
|
Packit |
e9ba0d |
.... ..11 = Frame type: Unnumbered frame (0x03)
|
|
Packit |
e9ba0d |
Organization Code: Extreme Networks (0x00e02b)
|
|
Packit |
e9ba0d |
PID: EDP (0x00bb)
|
|
Packit |
e9ba0d |
Extreme Discovery Protocol
|
|
Packit |
e9ba0d |
Version: 1
|
|
Packit |
e9ba0d |
Reserved: 0
|
|
Packit |
e9ba0d |
Data length: 320
|
|
Packit |
e9ba0d |
Checksum: 0x7304 [correct]
|
|
Packit |
e9ba0d |
[Good: True]
|
|
Packit |
e9ba0d |
[Bad : False]
|
|
Packit |
e9ba0d |
Sequence number: 784
|
|
Packit |
e9ba0d |
Machine ID type: MAC (0)
|
|
Packit |
e9ba0d |
Machine MAC: ExtremeN_05:44:6f (00:04:96:05:44:6f)
|
|
Packit |
e9ba0d |
Vlan: ID 1, Name "Default"
|
|
Packit |
e9ba0d |
Marker 0x99, length 100, type 5 = VL
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: VL (5)
|
|
Packit |
e9ba0d |
TLV length: 100
|
|
Packit |
e9ba0d |
Flags: 0x80
|
|
Packit |
e9ba0d |
1... .... = Flags-IP: Set
|
|
Packit |
e9ba0d |
.000 000. = Flags-reserved: 0x00
|
|
Packit |
e9ba0d |
.... ...0 = Flags-Unknown: Not set
|
|
Packit |
e9ba0d |
Reserved1: 00
|
|
Packit |
e9ba0d |
Vlan ID: 1
|
|
Packit |
e9ba0d |
Reserved2: 00000000
|
|
Packit |
e9ba0d |
IP addr: 0.0.0.0 (0.0.0.0)
|
|
Packit |
e9ba0d |
Name: Default
|
|
Packit |
e9ba0d |
Vlan: ID 0, Name "MacVlanDiscover"
|
|
Packit |
e9ba0d |
Marker 0x99, length 100, type 5 = VL
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: VL (5)
|
|
Packit |
e9ba0d |
TLV length: 100
|
|
Packit |
e9ba0d |
Flags: 0x00
|
|
Packit |
e9ba0d |
0... .... = Flags-IP: Not set
|
|
Packit |
e9ba0d |
.000 000. = Flags-reserved: 0x00
|
|
Packit |
e9ba0d |
.... ...0 = Flags-Unknown: Not set
|
|
Packit |
e9ba0d |
Reserved1: 00
|
|
Packit |
e9ba0d |
Vlan ID: 0
|
|
Packit |
e9ba0d |
Reserved2: 00000000
|
|
Packit |
e9ba0d |
IP addr: 0.0.0.0 (0.0.0.0)
|
|
Packit |
e9ba0d |
Name: MacVlanDiscover
|
|
Packit |
e9ba0d |
Vlan: ID 50, Name "AdminB2"
|
|
Packit |
e9ba0d |
Marker 0x99, length 100, type 5 = VL
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: VL (5)
|
|
Packit |
e9ba0d |
TLV length: 100
|
|
Packit |
e9ba0d |
Flags: 0x80
|
|
Packit |
e9ba0d |
1... .... = Flags-IP: Set
|
|
Packit |
e9ba0d |
.000 000. = Flags-reserved: 0x00
|
|
Packit |
e9ba0d |
.... ...0 = Flags-Unknown: Not set
|
|
Packit |
e9ba0d |
Reserved1: 00
|
|
Packit |
e9ba0d |
Vlan ID: 50
|
|
Packit |
e9ba0d |
Reserved2: 00000000
|
|
Packit |
e9ba0d |
IP addr: 10.50.0.63 (10.50.0.63)
|
|
Packit |
e9ba0d |
Name: AdminB2
|
|
Packit |
e9ba0d |
Null
|
|
Packit |
e9ba0d |
Marker 0x99, length 4, type 0 = Null
|
|
Packit |
e9ba0d |
TLV Marker: 0x99
|
|
Packit |
e9ba0d |
TLV type: Null (0)
|
|
Packit |
e9ba0d |
TLV length: 4
|
|
Packit |
e9ba0d |
*/
|
|
Packit |
e9ba0d |
struct lldpd_vlan *vlan;
|
|
Packit |
e9ba0d |
#endif
|
|
Packit |
e9ba0d |
struct lldpd_chassis *nchassis = NULL;
|
|
Packit |
e9ba0d |
struct lldpd_port *nport = NULL;
|
|
Packit |
e9ba0d |
struct lldpd cfg;
|
|
Packit |
e9ba0d |
char mac1[] = { 0x00, 0x04, 0x96, 0x05, 0x44, 0x6f };
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
cfg.g_config.c_mgmt_pattern = NULL;
|
|
Packit |
e9ba0d |
fail_unless(edp_decode(&cfg, pkt1, sizeof(pkt1), &hardware,
|
|
Packit |
e9ba0d |
&nchassis, &nport) != -1);
|
|
Packit |
e9ba0d |
if (!nchassis || !nport) {
|
|
Packit |
e9ba0d |
fail("unable to decode packet");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
ck_assert_int_eq(nchassis->c_id_subtype,
|
|
Packit |
e9ba0d |
LLDP_CHASSISID_SUBTYPE_LLADDR);
|
|
Packit |
e9ba0d |
ck_assert_int_eq(nchassis->c_id_len, ETHER_ADDR_LEN);
|
|
Packit |
e9ba0d |
fail_unless(memcmp(nchassis->c_id, mac1, ETHER_ADDR_LEN) == 0);
|
|
Packit |
e9ba0d |
ck_assert_int_eq(nport->p_id_subtype,
|
|
Packit |
e9ba0d |
LLDP_PORTID_SUBTYPE_IFNAME);
|
|
Packit |
e9ba0d |
ck_assert_int_eq(nport->p_id_len, strlen("1/1"));
|
|
Packit |
e9ba0d |
fail_unless(memcmp(nport->p_id,
|
|
Packit |
e9ba0d |
"1/1", strlen("1/1")) == 0);
|
|
Packit |
e9ba0d |
ck_assert_str_eq(nport->p_descr, "Slot 1 / Port 1");
|
|
Packit |
e9ba0d |
ck_assert_str_eq(nchassis->c_name, "ne0501sw.XXXXXX");
|
|
Packit |
e9ba0d |
ck_assert_str_eq(nchassis->c_descr, "EDP enabled device, version 7.6.4.0");
|
|
Packit |
e9ba0d |
ck_assert_int_eq(nchassis->c_cap_enabled, 0);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#ifdef ENABLE_DOT1
|
|
Packit |
e9ba0d |
/* Add this port to list of remote port for hardware port */
|
|
Packit |
e9ba0d |
TAILQ_INSERT_TAIL(&hardware.h_rports, nport, p_entries);
|
|
Packit |
e9ba0d |
nport->p_chassis = nchassis;
|
|
Packit |
e9ba0d |
nport->p_protocol = LLDPD_MODE_EDP;
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
/* Recept second packet */
|
|
Packit |
e9ba0d |
nchassis = NULL; nport = NULL;
|
|
Packit |
e9ba0d |
fail_unless(edp_decode(&cfg, pkt2, sizeof(pkt2), &hardware,
|
|
Packit |
e9ba0d |
&nchassis, &nport) == -1);
|
|
Packit |
e9ba0d |
nport = TAILQ_FIRST(&hardware.h_rports);
|
|
Packit |
e9ba0d |
if (!nport) {
|
|
Packit |
e9ba0d |
fail("unable to find our previous port?");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
ck_assert_int_eq(TAILQ_FIRST(&nport->p_chassis->c_mgmt)->m_addr.inet.s_addr,
|
|
Packit |
e9ba0d |
(u_int32_t)inet_addr("10.50.0.63"));
|
|
Packit |
e9ba0d |
if (TAILQ_EMPTY(&nport->p_vlans)) {
|
|
Packit |
e9ba0d |
fail("no VLAN");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
vlan = TAILQ_FIRST(&nport->p_vlans);
|
|
Packit |
e9ba0d |
ck_assert_int_eq(vlan->v_vid, 1);
|
|
Packit |
e9ba0d |
ck_assert_str_eq(vlan->v_name, "Default");
|
|
Packit |
e9ba0d |
vlan = TAILQ_NEXT(vlan, v_entries);
|
|
Packit |
e9ba0d |
if (!vlan) {
|
|
Packit |
e9ba0d |
fail("no more VLAN");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
ck_assert_int_eq(vlan->v_vid, 0);
|
|
Packit |
e9ba0d |
ck_assert_str_eq(vlan->v_name, "MacVlanDiscover");
|
|
Packit |
e9ba0d |
vlan = TAILQ_NEXT(vlan, v_entries);
|
|
Packit |
e9ba0d |
if (!vlan) {
|
|
Packit |
e9ba0d |
fail("no more VLAN");
|
|
Packit |
e9ba0d |
return;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
ck_assert_int_eq(vlan->v_vid, 50);
|
|
Packit |
e9ba0d |
ck_assert_str_eq(vlan->v_name, "AdminB2");
|
|
Packit |
e9ba0d |
vlan = TAILQ_NEXT(vlan, v_entries);
|
|
Packit |
e9ba0d |
fail_unless(vlan == NULL);
|
|
Packit |
e9ba0d |
#endif
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
END_TEST
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#endif
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
Suite *
|
|
Packit |
e9ba0d |
edp_suite(void)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
Suite *s = suite_create("EDP");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#ifdef ENABLE_EDP
|
|
Packit |
e9ba0d |
TCase *tc_send = tcase_create("Send EDP packets");
|
|
Packit |
e9ba0d |
TCase *tc_receive = tcase_create("Receive EDP packets");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
tcase_add_checked_fixture(tc_send, pcap_setup, pcap_teardown);
|
|
Packit |
e9ba0d |
tcase_add_test(tc_send, test_send_basic);
|
|
Packit |
e9ba0d |
#ifdef ENABLE_DOT1
|
|
Packit |
e9ba0d |
tcase_add_test(tc_send, test_send_vlans);
|
|
Packit |
e9ba0d |
#endif
|
|
Packit |
e9ba0d |
suite_add_tcase(s, tc_send);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
tcase_add_test(tc_receive, test_recv_edp);
|
|
Packit |
e9ba0d |
suite_add_tcase(s, tc_receive);
|
|
Packit |
e9ba0d |
#endif
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
return s;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
int
|
|
Packit |
e9ba0d |
main()
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
int number_failed;
|
|
Packit |
e9ba0d |
Suite *s = edp_suite ();
|
|
Packit |
e9ba0d |
SRunner *sr = srunner_create (s);
|
|
Packit |
e9ba0d |
srunner_set_fork_status (sr, CK_NOFORK); /* Can't fork because
|
|
Packit |
e9ba0d |
we need to write
|
|
Packit |
e9ba0d |
files */
|
|
Packit |
e9ba0d |
srunner_run_all (sr, CK_ENV);
|
|
Packit |
e9ba0d |
number_failed = srunner_ntests_failed (sr);
|
|
Packit |
e9ba0d |
srunner_free (sr);
|
|
Packit |
e9ba0d |
return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
|
Packit |
e9ba0d |
}
|