|
Packit |
e9ba0d |
/* -*- mode: c; c-file-style: "openbsd" -*- */
|
|
Packit |
e9ba0d |
/*
|
|
Packit |
e9ba0d |
* Copyright (c) 2013 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 <unistd.h>
|
|
Packit |
e9ba0d |
#include <string.h>
|
|
Packit |
e9ba0d |
#include <sys/utsname.h>
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
#include "client.h"
|
|
Packit |
e9ba0d |
#include "../log.h"
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_iface_pattern(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
log_debug("lldpctl", "set iface pattern");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
const char *value = cmdenv_get(env, "iface-pattern");
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_str(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_iface_pattern,
|
|
Packit |
e9ba0d |
value) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to set iface-pattern. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "iface-pattern set to new value %s",
|
|
Packit |
e9ba0d |
value?value:"(none)");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_perm_iface_pattern(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
log_debug("lldpctl", "set permanent iface pattern");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
const char *value = cmdenv_get(env, "iface-pattern");
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_str(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_perm_iface_pattern,
|
|
Packit |
e9ba0d |
value) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to set permanent iface pattern. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "permanent iface pattern set to new value %s",
|
|
Packit |
e9ba0d |
value?value:"(none)");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_iface_promisc(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_int(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_iface_promisc,
|
|
Packit |
e9ba0d |
arg?1:0) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to %s promiscuous mode: %s",
|
|
Packit |
e9ba0d |
arg?"enable":"disable",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "interface promiscuous mode %s",
|
|
Packit |
e9ba0d |
arg?"enabled":"disabled");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_system_description(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
int platform = 0;
|
|
Packit |
e9ba0d |
const char *what = arg;
|
|
Packit |
e9ba0d |
const char *value;
|
|
Packit |
e9ba0d |
if (!strcmp(what, "system")) {
|
|
Packit |
e9ba0d |
value = cmdenv_get(env, "description");
|
|
Packit |
e9ba0d |
} else {
|
|
Packit |
e9ba0d |
value = cmdenv_get(env, "platform");
|
|
Packit |
e9ba0d |
platform = 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_debug("lldpctl", "set %s description", what);
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_str(config,
|
|
Packit |
e9ba0d |
platform?lldpctl_k_config_platform:lldpctl_k_config_description,
|
|
Packit |
e9ba0d |
value) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to set description. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "description set to new value %s",
|
|
Packit |
e9ba0d |
value?value:"(none)");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_system_chassisid(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
const char *value;
|
|
Packit |
e9ba0d |
value = cmdenv_get(env, "description");
|
|
Packit |
e9ba0d |
log_debug("lldpctl", "set chassis ID");
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_str(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_cid_string,
|
|
Packit |
e9ba0d |
value) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to set chassis ID. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "chassis ID set to new value %s",
|
|
Packit |
e9ba0d |
value?value:"(none)");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_management(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
log_debug("lldpctl", "set management pattern");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
const char *value = cmdenv_get(env, "management-pattern");
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_str(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_mgmt_pattern, value) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to set management pattern. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "management pattaren set to new value %s",
|
|
Packit |
e9ba0d |
value?value:"(none)");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_hostname(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
struct utsname un;
|
|
Packit |
e9ba0d |
log_debug("lldpctl", "set system name");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
const char *value = cmdenv_get(env, "hostname");
|
|
Packit |
e9ba0d |
if (value && strlen(value) == 1 && value[0] == '.') {
|
|
Packit |
e9ba0d |
if (uname(&un) < 0) {
|
|
Packit |
e9ba0d |
log_warn("lldpctl", "cannot get node name");
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
value = un.nodename;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_str(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_hostname, value) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to set system name. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "system name set to new value %s",
|
|
Packit |
e9ba0d |
value?value:"(none)");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_update_descriptions(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_int(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_ifdescr_update,
|
|
Packit |
e9ba0d |
arg?1:0) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to %s interface description update: %s",
|
|
Packit |
e9ba0d |
arg?"enable":"disable",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
log_info("lldpctl", "interface description update %s",
|
|
Packit |
e9ba0d |
arg?"enabled":"disabled");
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
static int
|
|
Packit |
e9ba0d |
cmd_bondslave_srcmac_type(struct lldpctl_conn_t *conn, struct writer *w,
|
|
Packit |
e9ba0d |
struct cmd_env *env, void *arg)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
char *value_str;
|
|
Packit |
e9ba0d |
int value = -1;
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
log_debug("lldpctl", "bond slave src mac");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
lldpctl_atom_t *config = lldpctl_get_configuration(conn);
|
|
Packit |
e9ba0d |
if (config == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl",
|
|
Packit |
e9ba0d |
"unable to get configuration from lldpd. %s",
|
|
Packit |
e9ba0d |
lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
value_str = arg;
|
|
Packit |
e9ba0d |
for (lldpctl_map_t *b_map =
|
|
Packit |
e9ba0d |
lldpctl_key_get_map(lldpctl_k_config_bond_slave_src_mac_type);
|
|
Packit |
e9ba0d |
b_map->string; b_map++) {
|
|
Packit |
e9ba0d |
if (!strcmp(b_map->string, value_str)) {
|
|
Packit |
e9ba0d |
value = b_map->value;
|
|
Packit |
e9ba0d |
break;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
if (value == -1) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "invalid value");
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
if (lldpctl_atom_set_int(config,
|
|
Packit |
e9ba0d |
lldpctl_k_config_bond_slave_src_mac_type, value) == NULL) {
|
|
Packit |
e9ba0d |
log_warnx("lldpctl", "unable to set bond slave src mac type."
|
|
Packit |
e9ba0d |
" %s", lldpctl_last_strerror(conn));
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
return 0;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
log_info("lldpctl", "bond slave src mac set to new value: %s",
|
|
Packit |
e9ba0d |
value_str);
|
|
Packit |
e9ba0d |
lldpctl_atom_dec_ref(config);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
return 1;
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
/**
|
|
Packit |
e9ba0d |
* Register `configure system bond-slave-src-mac-type`
|
|
Packit |
e9ba0d |
*/
|
|
Packit |
e9ba0d |
static void
|
|
Packit |
e9ba0d |
register_commands_srcmac_type(struct cmd_node *configure)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
struct cmd_node *bond_slave_src_mac_type =
|
|
Packit |
e9ba0d |
commands_new(configure,
|
|
Packit |
e9ba0d |
"bond-slave-src-mac-type",
|
|
Packit |
e9ba0d |
"Set LLDP bond slave source MAC type",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
for (lldpctl_map_t *b_map =
|
|
Packit |
e9ba0d |
lldpctl_key_get_map(lldpctl_k_config_bond_slave_src_mac_type);
|
|
Packit |
e9ba0d |
b_map->string; b_map++) {
|
|
Packit |
e9ba0d |
if (!strcmp(b_map->string, "real")) {
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(bond_slave_src_mac_type,
|
|
Packit |
e9ba0d |
b_map->string, "Real mac",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, NULL,
|
|
Packit |
e9ba0d |
NULL, cmd_bondslave_srcmac_type,
|
|
Packit |
e9ba0d |
b_map->string);
|
|
Packit |
e9ba0d |
} else if (!strcmp(b_map->string, "zero")) {
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(bond_slave_src_mac_type,
|
|
Packit |
e9ba0d |
b_map->string, "All zero mac",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, NULL,
|
|
Packit |
e9ba0d |
NULL, cmd_bondslave_srcmac_type,
|
|
Packit |
e9ba0d |
b_map->string);
|
|
Packit |
e9ba0d |
} else if (!strcmp(b_map->string, "fixed")) {
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(bond_slave_src_mac_type,
|
|
Packit |
e9ba0d |
b_map->string, "Fixed value (3Com card)",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, NULL,
|
|
Packit |
e9ba0d |
NULL, cmd_bondslave_srcmac_type,
|
|
Packit |
e9ba0d |
b_map->string);
|
|
Packit |
e9ba0d |
} else if (!strcmp(b_map->string, "local")) {
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(bond_slave_src_mac_type,
|
|
Packit |
e9ba0d |
b_map->string, "Real Mac with locally "
|
|
Packit |
e9ba0d |
"administered bit set",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, NULL,
|
|
Packit |
e9ba0d |
NULL, cmd_bondslave_srcmac_type,
|
|
Packit |
e9ba0d |
b_map->string);
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
/**
|
|
Packit |
e9ba0d |
* Register `configure system` commands.
|
|
Packit |
e9ba0d |
*
|
|
Packit |
e9ba0d |
* Those are the commands to configure protocol-independant stuff.
|
|
Packit |
e9ba0d |
*/
|
|
Packit |
e9ba0d |
void
|
|
Packit |
e9ba0d |
register_commands_configure_system(struct cmd_node *configure,
|
|
Packit |
e9ba0d |
struct cmd_node *unconfigure)
|
|
Packit |
e9ba0d |
{
|
|
Packit |
e9ba0d |
struct cmd_node *configure_system = commands_new(
|
|
Packit |
e9ba0d |
configure,
|
|
Packit |
e9ba0d |
"system", "System configuration",
|
|
Packit |
e9ba0d |
cmd_check_no_env, NULL, "ports");
|
|
Packit |
e9ba0d |
struct cmd_node *unconfigure_system = commands_new(
|
|
Packit |
e9ba0d |
unconfigure,
|
|
Packit |
e9ba0d |
"system", "System configuration",
|
|
Packit |
e9ba0d |
cmd_check_no_env, NULL, "ports");
|
|
Packit |
e9ba0d |
struct cmd_node *configure_interface = commands_new(
|
|
Packit |
e9ba0d |
configure_system,
|
|
Packit |
e9ba0d |
"interface", "Interface related items",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL);
|
|
Packit |
e9ba0d |
struct cmd_node *unconfigure_interface = commands_new(
|
|
Packit |
e9ba0d |
unconfigure_system,
|
|
Packit |
e9ba0d |
"interface", "Interface related items",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_system,
|
|
Packit |
e9ba0d |
"description", "Override chassis description",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NULL, "Chassis description",
|
|
Packit |
e9ba0d |
NULL, cmd_store_env_value, "description"),
|
|
Packit |
e9ba0d |
NEWLINE, "Override chassis description",
|
|
Packit |
e9ba0d |
NULL, cmd_system_description, "system");
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_system,
|
|
Packit |
e9ba0d |
"description", "Don't override chassis description",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Don't override chassis description",
|
|
Packit |
e9ba0d |
NULL, cmd_system_description, "system");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_system,
|
|
Packit |
e9ba0d |
"chassisid", "Override chassis ID",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NULL, "Chassis ID",
|
|
Packit |
e9ba0d |
NULL, cmd_store_env_value, "description"),
|
|
Packit |
e9ba0d |
NEWLINE, "Override chassis ID",
|
|
Packit |
e9ba0d |
NULL, cmd_system_chassisid, "system");
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_system,
|
|
Packit |
e9ba0d |
"chassisid", "Don't override chassis ID",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Don't override chassis ID",
|
|
Packit |
e9ba0d |
NULL, cmd_system_chassisid, "system");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_system,
|
|
Packit |
e9ba0d |
"platform", "Override platform description",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NULL, "Platform description (CDP)",
|
|
Packit |
e9ba0d |
NULL, cmd_store_env_value, "platform"),
|
|
Packit |
e9ba0d |
NEWLINE, "Override platform description",
|
|
Packit |
e9ba0d |
NULL, cmd_system_description, "platform");
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_system,
|
|
Packit |
e9ba0d |
"platform", "Don't override platform description",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Don't override platform description",
|
|
Packit |
e9ba0d |
NULL, cmd_system_description, "platform");
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_system,
|
|
Packit |
e9ba0d |
"hostname", "Override system name",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NULL, "System name",
|
|
Packit |
e9ba0d |
NULL, cmd_store_env_value, "hostname"),
|
|
Packit |
e9ba0d |
NEWLINE, "Override system name",
|
|
Packit |
e9ba0d |
NULL, cmd_hostname, NULL);
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_system,
|
|
Packit |
e9ba0d |
"hostname", "Don't override system name",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Don't override system name",
|
|
Packit |
e9ba0d |
NULL, cmd_hostname, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_system,
|
|
Packit |
e9ba0d |
"ip", "IP related options",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
"management", "IP management related options",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
"pattern", "Set IP management pattern",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NULL, "IP management pattern (comma-separated list of wildcards)",
|
|
Packit |
e9ba0d |
NULL, cmd_store_env_value, "management-pattern"),
|
|
Packit |
e9ba0d |
NEWLINE, "Set IP management pattern",
|
|
Packit |
e9ba0d |
NULL, cmd_management, NULL);
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_system,
|
|
Packit |
e9ba0d |
"ip", "IP related options",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
"management", "IP management related options",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
"pattern", "Delete any IP management pattern",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Delete any IP management pattern",
|
|
Packit |
e9ba0d |
NULL, cmd_management, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_interface,
|
|
Packit |
e9ba0d |
"pattern", "Set active interface pattern",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NULL, "Interface pattern (comma-separated list of wildcards)",
|
|
Packit |
e9ba0d |
NULL, cmd_store_env_value, "iface-pattern"),
|
|
Packit |
e9ba0d |
NEWLINE, "Set active interface pattern",
|
|
Packit |
e9ba0d |
NULL, cmd_iface_pattern, NULL);
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_interface,
|
|
Packit |
e9ba0d |
"pattern", "Delete any interface pattern",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Clear interface pattern",
|
|
Packit |
e9ba0d |
NULL, cmd_iface_pattern, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_interface,
|
|
Packit |
e9ba0d |
"permanent", "Set permanent interface pattern",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NULL, "Permanent interface pattern (comma-separated list of wildcards)",
|
|
Packit |
e9ba0d |
NULL, cmd_store_env_value, "iface-pattern"),
|
|
Packit |
e9ba0d |
NEWLINE, "Set permanent interface pattern",
|
|
Packit |
e9ba0d |
NULL, cmd_perm_iface_pattern, NULL);
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_interface,
|
|
Packit |
e9ba0d |
"permanent", "Clear permanent interface pattern",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Delete any interface pattern",
|
|
Packit |
e9ba0d |
NULL, cmd_perm_iface_pattern, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_interface,
|
|
Packit |
e9ba0d |
"description", "Update interface descriptions with neighbor name",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Update interface descriptions with neighbor name",
|
|
Packit |
e9ba0d |
NULL, cmd_update_descriptions, "enable");
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_interface,
|
|
Packit |
e9ba0d |
"description", "Don't update interface descriptions with neighbor name",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Don't update interface descriptions with neighbor name",
|
|
Packit |
e9ba0d |
NULL, cmd_update_descriptions, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(configure_interface,
|
|
Packit |
e9ba0d |
"promiscuous", "Enable promiscuous mode on managed interfaces",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Enable promiscuous mode on managed interfaces",
|
|
Packit |
e9ba0d |
NULL, cmd_iface_promisc, "enable");
|
|
Packit |
e9ba0d |
commands_new(
|
|
Packit |
e9ba0d |
commands_new(unconfigure_interface,
|
|
Packit |
e9ba0d |
"promiscuous", "Don't enable promiscuous mode on managed interfaces",
|
|
Packit |
e9ba0d |
NULL, NULL, NULL),
|
|
Packit |
e9ba0d |
NEWLINE, "Don't enable promiscuous mode on managed interfaces",
|
|
Packit |
e9ba0d |
NULL, cmd_iface_promisc, NULL);
|
|
Packit |
e9ba0d |
|
|
Packit |
e9ba0d |
register_commands_srcmac_type(configure_system);
|
|
Packit |
e9ba0d |
}
|
|
Packit |
e9ba0d |
|