summaryrefslogtreecommitdiffstats
path: root/src/vnet/mpls
AgeCommit message (Expand)AuthorFilesLines
2019-12-10api: multiple connections per processDave Barach1-1/+1
2019-12-03fib: constify the adjacency in the rewrite nodesNeale Ranns1-1/+1
2019-11-26fib: Table ReplaceNeale Ranns2-9/+0
2019-11-11ip: functional interface to ip fragmentationOle Troan1-37/+181
2019-11-04mpls: number of mpls tunnel paths returns zeroIJsbrand Wijnands1-1/+1
2019-10-09mpls: support fragmentation of mpls output packetRajesh Goel2-14/+57
2019-09-19api: split vl_api_prefix into twoOle Troan1-2/+1
2019-08-20vppapigen: remove support for legacy typedefsPaul Vinciguerra1-3/+3
2019-07-26dhcp ip: DSCP settings for transmitted DHCP packetsNeale Ranns1-4/+6
2019-07-03fib: allow route delete with no paths and multipath=0 to remove theNeale Ranns1-7/+7
2019-06-19mpls: fix header offset overflowBenoît Ganne1-3/+6
2019-06-18fib: fib api updatesNeale Ranns3-275/+220
2019-05-30mpls: leverage vlib_buffer_advanceZhiyong Yang1-7/+4
2019-05-22stats: support multiple works for error countersOle Troan1-7/+0
2019-05-16init / exit function orderingDave Barach1-11/+10
2019-04-08fixing typosJim Thompson1-1/+1
2019-04-08minor spelling errors (both in comments)Jim Thompson1-1/+1
2019-03-07BIER: trace then drop. MPLS: trace the dropsNeale Ranns1-0/+43
2019-03-05mpls: migrate old MULTIARCH macros to VLIB_NODE_FNFilip Tehlar5-55/+24
2019-02-28MPLS: tunnel delete crashNeale Ranns1-0/+6
2019-02-14Add -fno-common compile optionBenoît Ganne1-1/+1
2019-01-30MPLS tunnel; fix crash when deleting non-existant pathNeale Ranns1-0/+3
2019-01-25MPLS-tunnel: show output to display the tunnel name correctlyNeale Ranns1-1/+1
2018-12-20FIB: encode the label stack in the FIB path during table dumpNeale Ranns1-1/+2
2018-12-04MPLS: buffer over-run with incorrectly init'd vector. fix VAT dumpNeale Ranns1-1/+1
2018-11-26Add a feature arc consistency checkDave Barach1-0/+2
2018-10-23c11 safe string handling supportDave Barach3-7/+7
2018-10-04Fix handling of mpls_tunnel_add_del APIJohn Lo1-2/+16
2018-09-26MPLS tunnel dump: use sw_if_index not tunnel_indexNeale Ranns4-16/+33
2018-09-25MPLS tunnel dump fixNeale Ranns3-4/+8
2018-09-24Trivial: Clean up some typos.Paul Vinciguerra1-1/+1
2018-09-20Route counters in the stats segmentNeale Ranns2-30/+47
2018-09-14BIER API and load-balancing fixesNeale Ranns1-0/+5
2018-08-30SR-MPLS: fixes and testsNeale Ranns2-0/+10
2018-08-29Consolidate table->index conversion in fib-path CLI processingNeale Ranns1-19/+0
2018-08-27MPLS: allow 16 as a valid output labelNeale Ranns1-1/+1
2018-08-24MPLS tunnel: don't reuse hw-indicesNeale Ranns1-27/+15
2018-08-03loop counter to prevent infiinte number of look ups per-packetNeale Ranns2-1/+9
2018-07-30FIB: return entry prefix by const reference to avoid the copyNeale Ranns1-9/+7
2018-07-23fix vector index range checksEyal Bari2-2/+2
2018-07-20IP directed broadcastNeale Ranns1-0/+1
2018-06-26node functions cannot be always_inlineDamjan Marion1-1/+1
2018-06-11MTU: Software interface / Per-protocol MTU supportOle Troan1-0/+3
2018-05-03MPLS prefetch fixesNeale Ranns2-15/+15
2018-04-18typo fix: UNKOWN -> UNKNOWNAndrey "Zed" Zaikin1-1/+1
2018-03-19Coverity found bugs in recent MPLS changesNeale Ranns1-15/+6
2018-03-16QoS recording and markingNeale Ranns1-1/+4
2018-03-13Common form of fib-path reproting in dumpsNeale Ranns1-11/+2
2018-03-09MPLS Unifom modeNeale Ranns7-92/+84
2018-01-30Allow the provider of a midchain adjacency to pass context data that is retur...Neale Ranns2-4/+13
ss="p">; /* timer expired */ ASSERT (tid != IGMP_TIMER_ID_INVALID); timer = pool_elt_at_index (timer_pool, tid); ASSERT (timer->func != NULL); timer->func (timer->obj, timer->data); next_timer: tid = igmp_get_next_timer (); } return 0; } /* *INDENT-OFF* */ VLIB_REGISTER_NODE (igmp_timer_process_node) = { .function = igmp_timer_process, .type = VLIB_NODE_TYPE_PROCESS, .name = "igmp-timer-process", .n_next_nodes = 0, }; /* *INDENT-ON* */ igmp_timer_id_t igmp_timer_schedule (f64 when, u32 obj, igmp_timer_function_t fn, void *data) { igmp_timer_t *timer; vlib_main_t *vm; ASSERT (fn); vm = vlib_get_main (); pool_get (timer_pool, timer); timer->exp_time = vlib_time_now (vm) + when; timer->obj = obj; timer->func = fn; timer->data = data; vec_add1 (pending_timers, timer - timer_pool); vec_sort_with_function (pending_timers, igmp_timer_compare); vlib_process_signal_event (vm, igmp_timer_process_node.index, IGMP_PROCESS_EVENT_UPDATE_TIMER, 0); return (timer - timer_pool); } void igmp_timer_retire (igmp_timer_id_t * tid) { if (IGMP_TIMER_ID_INVALID == *tid) return; vec_del1 (pending_timers, vec_search (pending_timers, *tid)); pool_put_index (timer_pool, *tid); *tid = IGMP_TIMER_ID_INVALID; vlib_process_signal_event (vlib_get_main (), igmp_timer_process_node.index, IGMP_PROCESS_EVENT_UPDATE_TIMER, 0); } u8 * format_igmp_timer_id (u8 * s, va_list * args) { igmp_timer_id_t tid = va_arg (*args, igmp_timer_id_t); igmp_timer_t *timer; if (IGMP_TIMER_ID_INVALID == tid) { s = format (s, "not-running"); } else { timer = pool_elt_at_index (timer_pool, tid); s = format (s, "[expires-in:%f]", timer->exp_time - vlib_time_now (vlib_get_main ())); } return (s); } /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */