* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <assert.h>
+
#include "lldpd.h"
#include "agent.h"
#include "frame.h"
return header_index_best();
}
-static struct lldpd_chassis*
+static struct lldpd_mgmt*
header_ipindexed_table(struct variable *vp, oid *name, size_t *length,
int exact, size_t *var_len, WriteMethod **write_method)
{
mgmt->m_addr.octets[1],
mgmt->m_addr.octets[2],
mgmt->m_addr.octets[3] };
- if (header_index_add(index, 6, chassis))
- return chassis;
+ if (header_index_add(index, 6, mgmt))
+ return mgmt;
}
return header_index_best();
}
-static struct lldpd_chassis*
+static struct lldpd_mgmt*
header_tpripindexed_table(struct variable *vp, oid *name, size_t *length,
int exact, size_t *var_len, WriteMethod **write_method)
{
mgmt->m_addr.octets[2],
mgmt->m_addr.octets[3] };
if (header_index_add(index, 9,
- port->p_chassis))
- return port->p_chassis;
+ mgmt))
+ return mgmt;
}
}
}
}
static u_char*
-agent_v_management(struct variable *vp, size_t *var_len, struct lldpd_chassis *chassis)
+agent_v_management(struct variable *vp, size_t *var_len, struct lldpd_mgmt *mgmt)
{
static unsigned long int long_ret;
static oid zeroDotZero[2] = {0, 0};
+ assert(mgmt->m_family == LLDPD_AF_IPV4);
switch (vp->magic) {
case LLDP_SNMP_ADDR_LEN:
long_ret = 5;
return (u_char*)&long_ret;
-/* FIXME */
-/*
case LLDP_SNMP_ADDR_IFSUBTYPE:
- if (chassis->c_mgmt4.iface != 0)
+ if (mgmt->m_iface != 0)
long_ret = LLDP_MGMT_IFACE_IFINDEX;
else
long_ret = 1;
return (u_char*)&long_ret;
case LLDP_SNMP_ADDR_IFID:
- long_ret = chassis->c_mgmt4.iface;
+ long_ret = mgmt->m_iface;
return (u_char*)&long_ret;
-*/
case LLDP_SNMP_ADDR_OID:
*var_len = sizeof(zeroDotZero);
return (u_char*)zeroDotZero;
int exact, size_t *var_len, WriteMethod **write_method)
{
- struct lldpd_chassis *chassis;
+ struct lldpd_mgmt *mgmt;
- if ((chassis = header_ipindexed_table(vp, name, length,
+ if ((mgmt = header_ipindexed_table(vp, name, length,
exact, var_len, write_method)) == NULL)
return NULL;
- return agent_v_management(vp, var_len, chassis);
+ return agent_v_management(vp, var_len, mgmt);
}
static u_char*
agent_h_remote_management(struct variable *vp, oid *name, size_t *length,
int exact, size_t *var_len, WriteMethod **write_method)
{
- struct lldpd_chassis *chassis;
+ struct lldpd_mgmt *mgmt;
- if ((chassis = header_tpripindexed_table(vp, name, length,
+ if ((mgmt = header_tpripindexed_table(vp, name, length,
exact, var_len, write_method)) == NULL)
return NULL;
- return agent_v_management(vp, var_len, chassis);
+ return agent_v_management(vp, var_len, mgmt);
}
/*
struct timeval test_starttime = { .tv_sec = 100, .tv_usec = 0 };
/* First chassis */
+struct lldpd_mgmt mgmt1 = {
+ .m_family = LLDPD_AF_IPV4,
+ .m_addr = { .inet = { 251789504 } }, /* 192.0.2.15 */
+ .m_addrsize = sizeof(struct in_addr),
+ .m_iface = 3
+};
struct lldpd_chassis chassis1 = {
.c_index = 1,
.c_protocol = LLDPD_MODE_LLDP,
.c_cap_available = LLDP_CAP_BRIDGE | LLDP_CAP_WLAN | LLDP_CAP_ROUTER,
.c_cap_enabled = LLDP_CAP_ROUTER,
.c_ttl = 60,
- .c_mgmt4 = {
- .family = AF_INET,
- .address = { .inet = { 251789504 } }, /* 192.0.2.15 */
- .addrsize = sizeof(struct in_addr),
- .iface = 3
- },
#ifdef ENABLE_LLDPMED
.c_med_cap_available = LLDPMED_CAP_CAP | LLDPMED_CAP_IV | \
LLDPMED_CAP_LOCATION | LLDPMED_CAP_POLICY | \
#endif
};
/* Second chassis */
+struct lldpd_mgmt mgmt2 = {
+ .m_family = LLDPD_AF_IPV4,
+ .m_addr = { .inet = { 285343936 } }, /* 192.0.2.17 */
+ .m_addrsize = sizeof(struct in_addr),
+ .m_iface = 5
+};
struct lldpd_chassis chassis2 = {
.c_index = 4,
.c_protocol = LLDPD_MODE_LLDP,
.c_cap_available = LLDP_CAP_ROUTER,
.c_cap_enabled = LLDP_CAP_ROUTER,
.c_ttl = 60,
- .c_mgmt4 = {
- .family = AF_INET,
- .address = { .inet = { 285343936 } }, /* 192.0.2.17 */
- .addrsize = sizeof(struct in_addr),
- .iface = 5
- },
#ifdef ENABLE_LLDPMED
.c_med_hw = "Hardware 2",
/* We skip c_med_fw */
starttime = test_starttime;
agent_scfg = &test_cfg;
TAILQ_INIT(&test_cfg.g_chassis);
+ TAILQ_INIT(&chassis1.c_mgmt);
+ TAILQ_INSERT_TAIL(&chassis1.c_mgmt, &mgmt1, m_entries);
TAILQ_INSERT_TAIL(&test_cfg.g_chassis, &chassis1, c_entries);
+ TAILQ_INIT(&chassis2.c_mgmt);
+ TAILQ_INSERT_TAIL(&chassis2.c_mgmt, &mgmt2, m_entries);
TAILQ_INSERT_TAIL(&test_cfg.g_chassis, &chassis2, c_entries);
TAILQ_INIT(&test_cfg.g_hardware);
TAILQ_INSERT_TAIL(&test_cfg.g_hardware, &hardware1, h_entries);