static void show_global(struct switch_dev *dev) { struct switch_val val; printf("Global attributes:\n"); show_attrs(dev, dev->ops, &val); }
static void show_port(struct switch_dev *dev, int port) { struct switch_val val; printf("Port %d:\n", port); val.port_vlan = port; show_attrs(dev, dev->port_ops, &val); }
static void show_vlan(struct switch_dev *dev, int vlan, bool all) { struct switch_val val; struct switch_attr *attr; val.port_vlan = vlan; if (all) { attr = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_VLAN, "ports"); if (swlib_get_attr(dev, attr, &val) < 0) return; if (!val.len) return; } printf("VLAN %d:\n", vlan); show_attrs(dev, dev->vlan_ops, &val); }
SaErrorT show_Rdr(Rdr_t *Rdr, hpi_ui_print_cb_t proc) { show_attrs(&(Rdr->Attrutes), 0, proc); return(SA_OK); }
SaErrorT show_Rpt(Rpt_t *Rpt, hpi_ui_print_cb_t proc) { show_attrs(&(Rpt->Attrutes), 0, proc); return(SA_OK); }
static Pr_ret_t show_attrs(Attributes_t *Attrs, int delta, hpi_ui_print_cb_t proc) { int i, type, len, del; char tmp[256], *name; char buf[SHOW_BUF_SZ]; union_type_t val; SaErrorT rv; Pr_ret_t ret; memset(buf, ' ', SHOW_BUF_SZ); del = delta << 1; len = SHOW_BUF_SZ - del; for (i = 0; i < Attrs->n_attrs; i++) { name = get_attr_name(Attrs, i); if (name == (char *)NULL) break; rv = get_value(Attrs, i, &val); if (rv != SA_OK) continue; type = get_attr_type(Attrs, i); switch (type) { case NO_TYPE: continue; case STRUCT_TYPE: snprintf(buf + del, len, "%s:\n", name); if (proc(buf) != 0) return(-1); rv = get_value(Attrs, i, &val); if (rv != SA_OK) continue; ret = show_attrs((Attributes_t *)(val.a), delta + 1, proc); if (ret != HPI_UI_OK) return(HPI_UI_END); continue; case LOOKUP_TYPE: strncpy(tmp, lookup_proc(Attrs->Attrs[i].lunum, val.i), 256); break; case DECODE_TYPE: rv = decode_proc(Attrs->Attrs[i].lunum, val.a, tmp, 256); if (rv != SA_OK) continue; break; case DECODE1_TYPE: rv = decode1_proc(Attrs->Attrs[i].lunum, val.i, tmp, 256); if (rv != SA_OK) continue; break; case READING_TYPE: if (thres_value(val.a, tmp, 256) != SA_OK) continue; break; case TEXT_BUFF_TYPE: snprintf(buf + del, len, "%s: ", name); if (proc(buf) != HPI_UI_OK) return(HPI_UI_END); ret = print_text_buffer(NULL, val.a, "\n", proc); if (ret != HPI_UI_OK) return(HPI_UI_END); continue; default: rv = get_value_as_string(Attrs, i, tmp, 256); if (rv != SA_OK) continue; }; snprintf(buf + del, len, "%s: %s\n", name, tmp); if (proc(buf) != HPI_UI_OK) return(HPI_UI_END); }; return(0); }