| 701 | } |
| 702 | |
| 703 | static int |
| 704 | vxlan_ftable_sysctl_dump(SYSCTL_HANDLER_ARGS) |
| 705 | { |
| 706 | struct rm_priotracker tracker; |
| 707 | struct sbuf sb; |
| 708 | struct vxlan_softc *sc; |
| 709 | struct vxlan_ftable_entry *fe; |
| 710 | size_t size; |
| 711 | int i, error; |
| 712 | |
| 713 | /* |
| 714 | * This is mostly intended for debugging during development. It is |
| 715 | * not practical to dump an entire large table this way. |
| 716 | */ |
| 717 | |
| 718 | sc = arg1; |
| 719 | size = PAGE_SIZE; /* Calculate later. */ |
| 720 | |
| 721 | sbuf_new(&sb, NULL, size, SBUF_FIXEDLEN); |
| 722 | sbuf_putc(&sb, '\n'); |
| 723 | |
| 724 | VXLAN_RLOCK(sc, &tracker); |
| 725 | for (i = 0; i < VXLAN_SC_FTABLE_SIZE; i++) { |
| 726 | LIST_FOREACH(fe, &sc->vxl_ftable[i], vxlfe_hash) { |
| 727 | if (sbuf_error(&sb) != 0) |
| 728 | break; |
| 729 | vxlan_ftable_entry_dump(fe, &sb); |
| 730 | } |
| 731 | } |
| 732 | VXLAN_RUNLOCK(sc, &tracker); |
| 733 | |
| 734 | if (sbuf_len(&sb) == 1) |
| 735 | sbuf_setpos(&sb, 0); |
| 736 | |
| 737 | sbuf_finish(&sb); |
| 738 | error = sysctl_handle_string(oidp, sbuf_data(&sb), sbuf_len(&sb), req); |
| 739 | sbuf_delete(&sb); |
| 740 | |
| 741 | return (error); |
| 742 | } |
| 743 | |
| 744 | static struct vxlan_ftable_entry * |
| 745 | vxlan_ftable_entry_alloc(void) |
nothing calls this directly
no test coverage detected