lldp: move TLV related functions to lldp-tlv.c

Move some public functions from lldp-internal.c to lldp-tlv.c, as now
they are not internal functions anymore.
This commit is contained in:
Beniamino Galvani
2015-10-02 17:39:22 +02:00
parent 176c355b43
commit b57003ecc3
2 changed files with 201 additions and 201 deletions
-201
View File
@@ -29,207 +29,6 @@
/* Maximum Ports can be attached to any chassis */
#define LLDP_MIB_MAX_PORT_PER_CHASSIS 32
int sd_lldp_packet_read_chassis_id(tlv_packet *tlv,
uint8_t *type,
uint8_t **data,
uint16_t *length) {
uint8_t subtype;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_CHASSIS_ID);
if (r < 0)
goto out2;
r = tlv_packet_read_u8(tlv, &subtype);
if (r < 0)
goto out1;
switch (subtype) {
case LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS:
r = tlv_packet_read_bytes(tlv, data, length);
if (r < 0)
goto out1;
break;
default:
r = -EOPNOTSUPP;
break;
}
*type = subtype;
out1:
(void) lldp_tlv_packet_exit_container(tlv);
out2:
return r;
}
int sd_lldp_packet_read_port_id(tlv_packet *tlv,
uint8_t *type,
uint8_t **data,
uint16_t *length) {
uint8_t subtype;
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_PORT_ID);
if (r < 0)
goto out2;
r = tlv_packet_read_u8(tlv, &subtype);
if (r < 0)
goto out1;
switch (subtype) {
case LLDP_PORT_SUBTYPE_PORT_COMPONENT:
case LLDP_PORT_SUBTYPE_INTERFACE_ALIAS:
case LLDP_PORT_SUBTYPE_INTERFACE_NAME:
case LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED:
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out1;
*data = (uint8_t *) s;
break;
case LLDP_PORT_SUBTYPE_MAC_ADDRESS:
r = tlv_packet_read_bytes(tlv, data, length);
if (r < 0)
goto out1;
break;
default:
r = -EOPNOTSUPP;
break;
}
*type = subtype;
out1:
(void) lldp_tlv_packet_exit_container(tlv);
out2:
return r;
}
int sd_lldp_packet_read_ttl(tlv_packet *tlv, uint16_t *ttl) {
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_TTL);
if (r < 0)
goto out;
r = tlv_packet_read_u16(tlv, ttl);
(void) lldp_tlv_packet_exit_container(tlv);
out:
return r;
}
int sd_lldp_packet_read_system_name(tlv_packet *tlv,
char **data,
uint16_t *length) {
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_SYSTEM_NAME);
if (r < 0)
return r;
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out;
*data = (char *) s;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}
int sd_lldp_packet_read_system_description(tlv_packet *tlv,
char **data,
uint16_t *length) {
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_SYSTEM_DESCRIPTION);
if (r < 0)
return r;
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out;
*data = (char *) s;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}
int sd_lldp_packet_read_port_description(tlv_packet *tlv,
char **data,
uint16_t *length) {
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_PORT_DESCRIPTION);
if (r < 0)
return r;
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out;
*data = (char *) s;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}
int sd_lldp_packet_read_system_capability(tlv_packet *tlv, uint16_t *data) {
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_SYSTEM_CAPABILITIES);
if (r < 0)
return r;
r = tlv_packet_read_u16(tlv, data);
if (r < 0)
goto out;
return 0;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}
/* 10.5.5.2.2 mibUpdateObjects ()
* The mibUpdateObjects () procedure updates the MIB objects corresponding to
* the TLVs contained in the received LLDPDU for the LLDP remote system
+201
View File
@@ -338,3 +338,204 @@ int lldp_tlv_packet_exit_container(tlv_packet *m) {
return 0;
}
int sd_lldp_packet_read_chassis_id(tlv_packet *tlv,
uint8_t *type,
uint8_t **data,
uint16_t *length) {
uint8_t subtype;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_CHASSIS_ID);
if (r < 0)
goto out2;
r = tlv_packet_read_u8(tlv, &subtype);
if (r < 0)
goto out1;
switch (subtype) {
case LLDP_CHASSIS_SUBTYPE_MAC_ADDRESS:
r = tlv_packet_read_bytes(tlv, data, length);
if (r < 0)
goto out1;
break;
default:
r = -EOPNOTSUPP;
break;
}
*type = subtype;
out1:
(void) lldp_tlv_packet_exit_container(tlv);
out2:
return r;
}
int sd_lldp_packet_read_port_id(tlv_packet *tlv,
uint8_t *type,
uint8_t **data,
uint16_t *length) {
uint8_t subtype;
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_PORT_ID);
if (r < 0)
goto out2;
r = tlv_packet_read_u8(tlv, &subtype);
if (r < 0)
goto out1;
switch (subtype) {
case LLDP_PORT_SUBTYPE_PORT_COMPONENT:
case LLDP_PORT_SUBTYPE_INTERFACE_ALIAS:
case LLDP_PORT_SUBTYPE_INTERFACE_NAME:
case LLDP_PORT_SUBTYPE_LOCALLY_ASSIGNED:
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out1;
*data = (uint8_t *) s;
break;
case LLDP_PORT_SUBTYPE_MAC_ADDRESS:
r = tlv_packet_read_bytes(tlv, data, length);
if (r < 0)
goto out1;
break;
default:
r = -EOPNOTSUPP;
break;
}
*type = subtype;
out1:
(void) lldp_tlv_packet_exit_container(tlv);
out2:
return r;
}
int sd_lldp_packet_read_ttl(tlv_packet *tlv, uint16_t *ttl) {
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_TTL);
if (r < 0)
goto out;
r = tlv_packet_read_u16(tlv, ttl);
(void) lldp_tlv_packet_exit_container(tlv);
out:
return r;
}
int sd_lldp_packet_read_system_name(tlv_packet *tlv,
char **data,
uint16_t *length) {
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_SYSTEM_NAME);
if (r < 0)
return r;
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out;
*data = (char *) s;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}
int sd_lldp_packet_read_system_description(tlv_packet *tlv,
char **data,
uint16_t *length) {
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_SYSTEM_DESCRIPTION);
if (r < 0)
return r;
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out;
*data = (char *) s;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}
int sd_lldp_packet_read_port_description(tlv_packet *tlv,
char **data,
uint16_t *length) {
char *s;
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_PORT_DESCRIPTION);
if (r < 0)
return r;
r = tlv_packet_read_string(tlv, &s, length);
if (r < 0)
goto out;
*data = (char *) s;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}
int sd_lldp_packet_read_system_capability(tlv_packet *tlv, uint16_t *data) {
int r;
assert_return(tlv, -EINVAL);
r = lldp_tlv_packet_enter_container(tlv, LLDP_TYPE_SYSTEM_CAPABILITIES);
if (r < 0)
return r;
r = tlv_packet_read_u16(tlv, data);
if (r < 0)
goto out;
return 0;
out:
(void) lldp_tlv_packet_exit_container(tlv);
return r;
}