]> git.ipfire.org Git - thirdparty/lldpd.git/commitdiff
lldp: don't use chassis TTL anymore
authorVincent Bernat <vincent@bernat.im>
Tue, 14 Feb 2017 15:50:54 +0000 (16:50 +0100)
committerVincent Bernat <vincent@bernat.im>
Sun, 19 Feb 2017 12:59:48 +0000 (13:59 +0100)
Move it to global configuration instead. This is less confusing than
having it at two different places.

14 files changed:
src/client/display.c
src/daemon/agent.c
src/daemon/client.c
src/daemon/event.c
src/daemon/lldpd.c
src/daemon/protocols/cdp.c
src/daemon/protocols/lldp.c
src/lib/atoms/chassis.c
src/lib/lldpctl.h
src/lldpd-structs.h
tests/check_cdp.c
tests/check_snmp.c
tests/common.c
tests/decode.c

index 13bbfa8f07cdd7b68c02e85c0bb6f475a1c8a1ab..cbd0e31a19b9e774795ed1583747a212a075c90c 100644 (file)
@@ -252,9 +252,6 @@ display_chassis(struct writer* w, lldpctl_atom_t* chassis, int details)
        }
        tag_datatag(w, "descr", "SysDescr",
            lldpctl_atom_get_str(chassis, lldpctl_k_chassis_descr));
-       if (details && lldpctl_atom_get_int(chassis, lldpctl_k_chassis_ttl) > 0)
-               tag_datatag(w, "ttl", "TTL",
-                   lldpctl_atom_get_str(chassis, lldpctl_k_chassis_ttl));
 
        /* Management addresses */
        mgmts = lldpctl_atom_get(chassis, lldpctl_k_chassis_mgmt);
index b58b4968c96d3b3aaea4fe24895302805954cada..3973183c0c5ee84382fee6b2ff85758b75895890 100644 (file)
@@ -606,7 +606,7 @@ agent_h_scalars(struct variable *vp, oid *name, size_t *length,
                 long_ret = scfg->g_config.c_tx_interval;
                return (u_char *)&long_ret;
        case LLDP_SNMP_TXMULTIPLIER:
-               long_ret = LOCAL_CHASSIS(scfg)->c_ttl / scfg->g_config.c_tx_interval;
+               long_ret = scfg->g_config.c_ttl / scfg->g_config.c_tx_interval;
                return (u_char *)&long_ret;
        case LLDP_SNMP_REINITDELAY:
                long_ret = 1;
index 8382d020aa15b6096a575bcb60d6a7e0676c16da..cb59ffbd8c5634a143c74e624f6096f74d8bf976 100644 (file)
@@ -76,7 +76,7 @@ client_handle_set_configuration(struct lldpd *cfg, enum hmsg_type *type,
                        log_debug("rpc", "client change transmit interval to %d",
                            config->c_tx_interval);
                        cfg->g_config.c_tx_interval = config->c_tx_interval;
-                       LOCAL_CHASSIS(cfg)->c_ttl = cfg->g_config.c_tx_interval *
+                       cfg->g_config.c_ttl = cfg->g_config.c_tx_interval *
                            cfg->g_config.c_tx_hold;
                }
        }
@@ -84,7 +84,7 @@ client_handle_set_configuration(struct lldpd *cfg, enum hmsg_type *type,
                log_debug("rpc", "client change transmit hold to %d",
                    config->c_tx_hold);
                cfg->g_config.c_tx_hold = config->c_tx_hold;
-               LOCAL_CHASSIS(cfg)->c_ttl = cfg->g_config.c_tx_interval *
+               cfg->g_config.c_ttl = cfg->g_config.c_tx_interval *
                    cfg->g_config.c_tx_hold;
        }
        if (CHANGED(c_lldp_portid_type) &&
index bf12879ebf0c8a3ce1e2da0d1e562b28df572f75..fc09e0c0fa7c193767557308fd6f57d31624d3d6 100644 (file)
@@ -797,7 +797,7 @@ levent_schedule_cleanup(struct lldpd *cfg)
        }
 
        /* Compute the next TTL event */
-       struct timeval tv = { LOCAL_CHASSIS(cfg)->c_ttl, 0 };
+       struct timeval tv = { cfg->g_config.c_ttl, 0 };
        time_t now = time(NULL);
        time_t next;
        struct lldpd_hardware *hardware;
index 9d56daea21f3dbb29c92295ffb7d15693528a164..798bd602518ca986f70232ee0a1f0126b1c75aec 100644 (file)
@@ -1771,6 +1771,7 @@ lldpd_main(int argc, char *argv[], char *envp[])
        cfg->g_config.c_receiveonly = receiveonly;
        cfg->g_config.c_tx_interval = LLDPD_TX_INTERVAL;
        cfg->g_config.c_tx_hold = LLDPD_TX_HOLD;
+       cfg->g_config.c_ttl = cfg->g_config.c_tx_interval * cfg->g_config.c_tx_hold;
        cfg->g_config.c_max_neighbors = LLDPD_MAX_NEIGHBORS;
 #ifdef ENABLE_LLDPMED
        cfg->g_config.c_enable_fast_start = enable_fast_start;
@@ -1823,9 +1824,6 @@ lldpd_main(int argc, char *argv[], char *envp[])
                cfg->g_config.c_noinventory = 1;
 #endif
 
-       /* Set TTL */
-       lchassis->c_ttl = cfg->g_config.c_tx_interval * cfg->g_config.c_tx_hold;
-
        log_debug("main", "initialize protocols");
        cfg->g_protocols = protos;
        for (i=0; protos[i].mode != 0; i++) {
index cc2c93e4e5fce7d4619d126bb82f16e2f7c66d4c..ac76b9ff06d5ca2eca0f09fea7a4b52bd1fa67a8 100644 (file)
@@ -87,7 +87,7 @@ cdp_send(struct lldpd *global,
        if (!(
              POKE_SAVE(pos_cdp) &&
              POKE_UINT8((version == 0)?1:version) &&
-             POKE_UINT8(chassis->c_ttl) &&
+             POKE_UINT8(global?global->g_config.c_ttl:180) &&
              POKE_SAVE(pos_checksum) && /* Save checksum position */
              POKE_UINT16(0)))
                goto toobig;
index a338313f5a6030d3f3f5c76703a3255bba4ee3ab..c70794d9f10994604ec927afd32ea6e323eec76c 100644 (file)
@@ -131,7 +131,7 @@ static int _lldp_send(struct lldpd *global,
        /* Time to live */
        if (!(
              POKE_START_LLDP_TLV(LLDP_TLV_TTL) &&
-             POKE_UINT16(shutdown?0:chassis->c_ttl) &&
+             POKE_UINT16(shutdown?0:(global?global->g_config.c_ttl:180)) &&
              POKE_END_LLDP_TLV))
                goto toobig;
 
index 6cbf1a4fca54a2b11991a11abe1a3eb755216d90..006996fce68fc8c6ed77d814968e5bdb9862db4d 100644 (file)
@@ -186,8 +186,6 @@ _lldpctl_atom_get_int_chassis(lldpctl_atom_t *atom, lldpctl_key_t key)
                return chassis->c_cap_available;
        case lldpctl_k_chassis_cap_enabled:
                return chassis->c_cap_enabled;
-       case lldpctl_k_chassis_ttl:
-               return chassis->c_ttl;
 #ifdef ENABLE_LLDPMED
        case lldpctl_k_chassis_med_type:
                return chassis->c_med_type;
index a5fbb733881220a133c70e561268f2c2e287d610..08a4dba97d5d9bee88414b800e6bfc2e2902cc51 100644 (file)
@@ -726,7 +726,7 @@ typedef enum {
        lldpctl_k_chassis_cap_available, /**< `(I)` Available capabalities (see `LLDP_CAP_*`) */
        lldpctl_k_chassis_cap_enabled,   /**< `(I)` Enabled capabilities (see `LLDP_CAP_*`) */
        lldpctl_k_chassis_mgmt,          /**< `(AL)` List of management addresses */
-       lldpctl_k_chassis_ttl,           /**< `(I)` The chassis TTL */
+       lldpctl_k_chassis_ttl,           /**< Deprecated */
 
        lldpctl_k_chassis_med_type = 1900, /**< `(IS)` Chassis MED type. See `LLDP_MED_CLASS_*` */
        lldpctl_k_chassis_med_cap,  /**< `(I)` Available MED capabilitied. See `LLDP_MED_CAP_*` */
index 5596cf7996b8d5eda16724cc7392174c865945b7..fd9f1ae07725c9c6ecbec335373cb10c7d64b35f 100644 (file)
@@ -178,8 +178,6 @@ struct lldpd_chassis {
        u_int16_t                c_cap_available;
        u_int16_t                c_cap_enabled;
 
-       u_int16_t                c_ttl; /* TTL for local chassis */
-
        TAILQ_HEAD(, lldpd_mgmt) c_mgmt;
 
 #ifdef ENABLE_LLDPMED
@@ -373,6 +371,7 @@ MARSHAL_END(lldpd_port_set);
 struct lldpd_config {
        int c_paused;           /* lldpd is paused */
        int c_tx_interval;      /* Transmit interval */
+       int c_ttl;              /* TTL */
        int c_smart;            /* Bitmask for smart configuration (see SMART_*) */
        int c_receiveonly;      /* Receive only mode */
        int c_max_neighbors;    /* Maximum number of neighbors (per protocol) */
index ef11218bf9a4da0d1a91aa5fcff54226cccdcc21..dddd063cbae9fa531c766ca8373e357a280cd7b0 100644 (file)
@@ -109,6 +109,7 @@ Cisco Discovery Protocol
        struct lldpd_mgmt *mgmt;
        struct lldpd cfg = {
                .g_config = {
+                       .c_ttl = 180,
                        .c_platform = "Linux"
                }
        };
@@ -243,6 +244,7 @@ Cisco Discovery Protocol
        struct lldpd_mgmt *mgmt2;
        struct lldpd cfg = {
                .g_config = {
+                       .c_ttl = 180,
                        .c_platform = "Linux"
                }
        };
index e697798fb5a593ec8ef8a135d39196bb4f1221e6..742c5bf8cb8b998fe0c54820e8b32e7ff6621bdd 100644 (file)
@@ -33,6 +33,7 @@ extern struct variable8 agent_lldp_vars[];
 struct lldpd test_cfg = {
        .g_config = {
                .c_tx_interval = 30,
+               .c_ttl = 60,
                .c_smart = 0
        }
 };
@@ -55,7 +56,6 @@ struct lldpd_chassis chassis1 = {
        .c_descr         = "First chassis",
        .c_cap_available = LLDP_CAP_BRIDGE | LLDP_CAP_WLAN | LLDP_CAP_ROUTER,
        .c_cap_enabled   = LLDP_CAP_ROUTER,
-       .c_ttl           = 60,
 #ifdef ENABLE_LLDPMED
        .c_med_cap_available = LLDP_MED_CAP_CAP | LLDP_MED_CAP_IV | \
                LLDP_MED_CAP_LOCATION | LLDP_MED_CAP_POLICY | \
@@ -96,7 +96,6 @@ struct lldpd_chassis chassis2 = {
        .c_descr         = "Second chassis",
        .c_cap_available = LLDP_CAP_ROUTER,
        .c_cap_enabled   = LLDP_CAP_ROUTER,
-       .c_ttl           = 60,
 #ifdef ENABLE_LLDPMED
        .c_med_hw     = "Hardware 2",
        /* We skip c_med_fw */
index 36528b77ad2e1e32ac912caadec2d153cfed935d..a077eb7314e375f8142d2fc927524ee47e968bd3 100644 (file)
@@ -124,7 +124,6 @@ pcap_setup()
        /* Prepare chassis */
        memset(&chassis, 0, sizeof(struct lldpd_chassis));
        hardware.h_lport.p_chassis = &chassis;
-       chassis.c_ttl = 180;
 }
 
 void
index 68733500b1263c38a1b72cf8181836306e133a06..aefe28fde7a41d1d4b470543916b80c569b486dd 100644 (file)
@@ -139,7 +139,6 @@ main(int argc, char **argv)
        printf(" Description: %s\n", nchassis->c_descr?nchassis->c_descr:"(null)");
        printf(" Cap available: %" PRIu16 "\n", nchassis->c_cap_available);
        printf(" Cap enabled: %" PRIu16 "\n", nchassis->c_cap_enabled);
-       printf(" TTL: %" PRIu16 "\n", nchassis->c_ttl);
        struct lldpd_mgmt *mgmt;
        TAILQ_FOREACH(mgmt, &nchassis->c_mgmt, m_entries) {
                char ipaddress[INET6_ADDRSTRLEN + 1];