1/*- 2 * Copyright (c) 2006 Shteryana Shopova <syrinx@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 12 unchanged lines hidden (view full) --- 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * Bridge MIB implementation for SNMPd. 27 * Bridge ports. 28 * |
29 * $FreeBSD: head/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_port.c 165046 2006-12-09 20:58:26Z syrinx $ |
30 */ 31 32#include <sys/queue.h> 33#include <sys/socket.h> 34#include <sys/types.h> 35 36#include <net/ethernet.h> 37#include <net/if.h> --- 310 unchanged lines hidden (view full) --- 348 349 if ((bif = bridge_get_default()) == NULL) 350 return (SNMP_ERR_NOSUCHNAME); 351 352 if (time(NULL) - bif->ports_age > bridge_get_data_maxage() && 353 bridge_update_memif(bif) <= 0) 354 return (SNMP_ERR_NOSUCHNAME); 355 |
356 switch (op) { 357 case SNMP_OP_GET: 358 if (val->var.len - sub != 1) 359 return (SNMP_ERR_NOSUCHNAME); 360 if ((bp = bridge_port_find(val->var.subs[sub], 361 bif)) == NULL) 362 return (SNMP_ERR_NOSUCHNAME); 363 break; --- 12 unchanged lines hidden (view full) --- 376 val->var.subs[sub] = bp->port_no; 377 break; 378 379 case SNMP_OP_SET: 380 return (SNMP_ERR_NOT_WRITEABLE); 381 382 case SNMP_OP_ROLLBACK: 383 case SNMP_OP_COMMIT: |
384 default: |
385 abort(); 386 } 387 388 switch (val->var.subs[sub - 1]) { 389 case LEAF_dot1dBasePort: 390 val->v.integer = bp->port_no; 391 break; 392 case LEAF_dot1dBasePortIfIndex: --- 23 unchanged lines hidden (view full) --- 416 417 if ((bif = bridge_get_default()) == NULL) 418 return (SNMP_ERR_NOSUCHNAME); 419 420 if (time(NULL) - bif->ports_age > bridge_get_data_maxage() && 421 bridge_update_memif(bif) <= 0) 422 return (SNMP_ERR_NOSUCHNAME); 423 |
424 switch (op) { 425 case SNMP_OP_GET: 426 if (val->var.len - sub != 1) 427 return (SNMP_ERR_NOSUCHNAME); 428 if ((bp = bridge_port_find(val->var.subs[sub], 429 bif)) == NULL) 430 return (SNMP_ERR_NOSUCHNAME); 431 break; --- 69 unchanged lines hidden (view full) --- 501 bridge_port_set_path_cost(bif->bif_name, bp, 502 ctx->scratch->int1); 503 break; 504 } 505 return (SNMP_ERR_NOERROR); 506 507 case SNMP_OP_COMMIT: 508 return (SNMP_ERR_NOERROR); |
509 510 default: 511 abort(); |
512 } 513 514 ret = SNMP_ERR_NOERROR; 515 switch (val->var.subs[sub - 1]) { 516 case LEAF_dot1dStpPort: 517 val->v.integer = bp->port_no; 518 break; 519 case LEAF_dot1dStpPortPriority: --- 40 unchanged lines hidden (view full) --- 560 561 if ((bif = bridge_get_default()) == NULL) 562 return (SNMP_ERR_NOSUCHNAME); 563 564 if (time(NULL) - bif->ports_age > bridge_get_data_maxage() && 565 bridge_update_memif(bif) <= 0) 566 return (SNMP_ERR_NOSUCHNAME); 567 |
568 switch (op) { 569 case SNMP_OP_GET: 570 if (val->var.len - sub != 1) 571 return (SNMP_ERR_NOSUCHNAME); 572 if ((bp = bridge_port_find(val->var.subs[sub], 573 bif)) == NULL) 574 return (SNMP_ERR_NOSUCHNAME); 575 break; --- 67 unchanged lines hidden (view full) --- 643 bridge_port_set_path_cost(bif->bif_name, bp, 644 ctx->scratch->int1); 645 break; 646 } 647 return (SNMP_ERR_NOERROR); 648 649 case SNMP_OP_COMMIT: 650 return (SNMP_ERR_NOERROR); |
651 652 default: 653 abort(); |
654 } 655 656 switch (val->var.subs[sub - 1]) { 657 case LEAF_dot1dStpPortProtocolMigration: 658 val->v.integer = bp->proto_migr; 659 break; 660 case LEAF_dot1dStpPortAdminEdgePort: 661 val->v.integer = bp->admin_edge; --- 24 unchanged lines hidden (view full) --- 686 687 if ((bif = bridge_get_default()) == NULL) 688 return (SNMP_ERR_NOSUCHNAME); 689 690 if (time(NULL) - bif->ports_age > bridge_get_data_maxage() && 691 bridge_update_memif(bif) <= 0) 692 return (SNMP_ERR_NOSUCHNAME); 693 |
694 switch (op) { 695 case SNMP_OP_GET: 696 if (val->var.len - sub != 1) 697 return (SNMP_ERR_NOSUCHNAME); 698 if ((bp = bridge_port_find(val->var.subs[sub], 699 bif)) == NULL) 700 return (SNMP_ERR_NOSUCHNAME); 701 break; --- 12 unchanged lines hidden (view full) --- 714 val->var.subs[sub] = bp->port_no; 715 break; 716 717 case SNMP_OP_SET: 718 return (SNMP_ERR_NOT_WRITEABLE); 719 720 case SNMP_OP_ROLLBACK: 721 case SNMP_OP_COMMIT: |
722 default: |
723 abort(); 724 } 725 726 switch (val->var.subs[sub - 1]) { 727 case LEAF_dot1dTpPort: 728 val->v.integer = bp->port_no; 729 break; 730 case LEAF_dot1dTpPortMaxInfo: --- 389 unchanged lines hidden (view full) --- 1120 return (SNMP_ERR_NOERROR); 1121} 1122 1123int 1124op_begemot_stp_port(struct snmp_context *ctx, struct snmp_value *val, 1125 uint sub, uint iidx __unused, enum snmp_op op) 1126{ 1127 int ret; |
1128 struct bridge_port *bp; |
1129 const char *b_name; 1130 1131 if (time(NULL) - ports_list_age > bridge_get_data_maxage()) 1132 bridge_update_all_ports(); 1133 1134 switch (op) { 1135 case SNMP_OP_GET: 1136 if ((bp = bridge_port_index_get(&val->var, sub, 0)) == NULL) --- 62 unchanged lines hidden (view full) --- 1199 bridge_port_set_path_cost(b_name, bp, 1200 ctx->scratch->int1); 1201 break; 1202 } 1203 return (SNMP_ERR_NOERROR); 1204 1205 case SNMP_OP_COMMIT: 1206 return (SNMP_ERR_NOERROR); |
1207 1208 default: 1209 abort(); |
1210 } 1211 1212 ret = SNMP_ERR_NOERROR; 1213 switch (val->var.subs[sub - 1]) { 1214 case LEAF_begemotBridgeStpPort: 1215 val->v.integer = bp->port_no; 1216 break; 1217 case LEAF_begemotBridgeStpPortPriority: --- 28 unchanged lines hidden (view full) --- 1246 return (ret); 1247} 1248 1249int 1250op_begemot_stp_ext_port(struct snmp_context *ctx, struct snmp_value *val, 1251 uint sub, uint iidx __unused, enum snmp_op op) 1252{ 1253 int ret; |
1254 struct bridge_port *bp; |
1255 const char *b_name; 1256 1257 if (time(NULL) - ports_list_age > bridge_get_data_maxage()) 1258 bridge_update_all_ports(); 1259 1260 switch (op) { 1261 case SNMP_OP_GET: 1262 if ((bp = bridge_port_index_get(&val->var, sub, 0)) == NULL) --- 60 unchanged lines hidden (view full) --- 1323 bridge_port_set_path_cost(b_name, bp, 1324 ctx->scratch->int1); 1325 break; 1326 } 1327 return (SNMP_ERR_NOERROR); 1328 1329 case SNMP_OP_COMMIT: 1330 return (SNMP_ERR_NOERROR); |
1331 1332 default: 1333 abort(); |
1334 } 1335 1336 switch (val->var.subs[sub - 1]) { 1337 case LEAF_begemotBridgeStpPortProtocolMigration: 1338 val->v.integer = bp->proto_migr; 1339 break; 1340 case LEAF_begemotBridgeStpPortAdminEdgePort: 1341 val->v.integer = bp->admin_edge; --- 14 unchanged lines hidden (view full) --- 1356 1357 return (SNMP_ERR_NOERROR); 1358} 1359 1360int 1361op_begemot_tp_port(struct snmp_context *c __unused, struct snmp_value *val, 1362 uint sub, uint iidx __unused, enum snmp_op op) 1363{ |
1364 struct bridge_port *bp; |
1365 1366 if (time(NULL) - ports_list_age > bridge_get_data_maxage()) 1367 bridge_update_all_ports(); 1368 1369 switch (op) { 1370 case SNMP_OP_GET: 1371 if ((bp = bridge_port_index_get(&val->var, sub, 0)) == NULL) 1372 return (SNMP_ERR_NOSUCHNAME); --- 5 unchanged lines hidden (view full) --- 1378 return (SNMP_ERR_NOSUCHNAME); 1379 break; 1380 1381 case SNMP_OP_SET: 1382 return (SNMP_ERR_NOT_WRITEABLE); 1383 1384 case SNMP_OP_ROLLBACK: 1385 case SNMP_OP_COMMIT: |
1386 default: 1387 abort(); |
1388 } 1389 1390 switch (val->var.subs[sub - 1]) { 1391 case LEAF_begemotBridgeTpPort: 1392 val->v.integer = bp->port_no; 1393 break; 1394 case LEAF_begemotBridgeTpPortMaxInfo: 1395 val->v.integer = bp->max_info; --- 14 unchanged lines hidden --- |