aboutsummaryrefslogtreecommitdiffstats
path: root/INFO.yaml
blob: 3e58c72546e8abdd3288f2e73cafa03fbe2321ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
---
project: 'vpp'
project_creation_date: '2015-12-08'
project_category: ''
lifecycle_state: 'Incubation'
project_lead: &vpp_ptl
    name: 'Damjan Marion'
    email: 'dmarion@me.com'
    id: 'dmarion'
    company: 'cisco'
    timezone: 'Europe/Zagreb'
primary_contact: *vpp_ptl
issue_tracking:
    type: 'jira'
    url: 'https://jira.fd.io/projects/vpp'
    key: 'VPP'
mailing_list:
    type: 'groups.io'
    url: 'https://lists.fd.io/g/vpp-dev'
    tag: '<[sub-project_name]>'
realtime_discussion:
    type: 'irc'
    server: 'freenode.net'
    channel: 'fdio-vpp'
meetings:
    - type: 'zoom'
      agenda: 'n/a'
      url: 'https://wiki.fd.io/view/VPP/Meeting'
      server: 'n/a'
      channel: 'fdio-vpp'
      repeats: 'weekly'
      time: '08:00 PT'
repositories:
    - 'vpp'
committers:
    - <<: *vpp_ptl
    - name: 'Dave Barach'
      company: 'cisco'
      email: 'openvpp@barachs.net'
      id: 'dbarach'
    - name: 'Florin Coras'
      company: 'cisco'
      email: 'florin.coras@gmail.com'
      id: 'florin.coras'
    - name: 'Benoit Ganne'
      company: 'cisco'
      email: 'bganne@cisco.com'
      id: 'bganne'
    - name: 'John Lo'
      company: 'cisco'
      email: 'loj@cisco.com'
      id: 'lojohn'
    - name: 'Chris Luke'
      company: 'comcast'
      email: 'chris_luke@comcast.com'
      id: 'chrisluke'
    - name: 'Neale Ranns'
      company: 'cisco'
      email: 'nranns@cisco.com'
      id: 'nranns'
    - name: 'Matthew Smith'
      company: 'netgate'
      email: 'mgsmith@netgate.com'
      id: 'mgsmith'
    - name: 'Ole Trøan'
      company: 'employees'
      email: 'otroan@employees.org'
      id: 'otroan'
    - name: 'Paul Vinciguerra'
      company: 'vinciconsulting'
      email: 'pvinci@vinciconsulting.com'
      id: 'pvinci'
    - name: 'Dave Wallace'
      company: 'gmail'
      email: 'dwallacelf@gmail.com'
      id: 'dwallacelf'
    - name: 'Ed Warnicke'
      company: 'gmail'
      email: 'hagbard@gmail.com'
      id: 'hagbard'
    - name: 'Andrew Yourtchenko'
      company: 'cisco'
      email: 'ayourtch@cisco.com'
      id: 'ayourtch'
    - name: 'Fan Zhang'
      company: 'intel'
      email: 'roy.fan.zhang@intel.com'
      id: 'royzhang1980'
tsc:
    # yamllint disable rule:line-length
    approval: 'https://wiki.fd.io/view/TSC/Meeting_Minutes'
    changes:
        - type: 'Promotion'
          name: 'Damjan Marion'
          link: 'https://lists.fd.io/g/vpp-dev/message/17521'
        - type: 'Addition'
          name: 'Fan Zhang'
          link: 'https://lists.fd.io/g/vpp-dev/message/19068'
\ if (current->next == p) \ { \ current->next = current->next->next; \ break; \ } \ current = current->next; \ } \ ASSERT (current); \ } \ } #define _VLIB_INIT_FUNCTION_SYMBOL(x, type) \ _vlib_##type##_function_##x #define VLIB_INIT_FUNCTION_SYMBOL(x) \ _VLIB_INIT_FUNCTION_SYMBOL(x, init) #define VLIB_MAIN_LOOP_ENTER_FUNCTION_SYMBOL(x) \ _VLIB_INIT_FUNCTION_SYMBOL(x, main_loop_enter) #define VLIB_MAIN_LOOP_EXIT_FUNCTION_SYMBOL(x) \ _VLIB_INIT_FUNCTION_SYMBOL(x, main_loop_exit) #define VLIB_CONFIG_FUNCTION_SYMBOL(x) \ _VLIB_INIT_FUNCTION_SYMBOL(x, config) /* Declaration is global (e.g. not static) so that init functions can be called from other modules to resolve init function depend. */ #ifndef CLIB_MARCH_VARIANT #define VLIB_DECLARE_INIT_FUNCTION(x, tag) \ vlib_init_function_t * _VLIB_INIT_FUNCTION_SYMBOL (x, tag) = x; \ static void __vlib_add_##tag##_function_##x (void) \ __attribute__((__constructor__)) ; \ static void __vlib_add_##tag##_function_##x (void) \ { \ vlib_main_t * vm = vlib_get_main(); \ static _vlib_init_function_list_elt_t _vlib_init_function; \ _vlib_init_function.next_init_function \ = vm->tag##_function_registrations; \ vm->tag##_function_registrations = &_vlib_init_function; \ _vlib_init_function.f = &x; \ } \ static void __vlib_rm_##tag##_function_##x (void) \ __attribute__((__destructor__)) ; \ static void __vlib_rm_##tag##_function_##x (void) \ { \ vlib_main_t * vm = vlib_get_main(); \ _vlib_init_function_list_elt_t *next; \ if (vm->tag##_function_registrations->f == &x) \ { \ vm->tag##_function_registrations = \ vm->tag##_function_registrations->next_init_function; \ return; \ } \ next = vm->tag##_function_registrations; \ while (next->next_init_function) \ { \ if (next->next_init_function->f == &x) \ { \ next->next_init_function = \ next->next_init_function->next_init_function; \ return; \ } \ next = next->next_init_function; \ } \ } #else /* create unused pointer to silence compiler warnings and get whole function optimized out */ #define VLIB_DECLARE_INIT_FUNCTION(x, tag) \ static __clib_unused void * __clib_unused_##tag##_##x = x; #endif #define VLIB_INIT_FUNCTION(x) VLIB_DECLARE_INIT_FUNCTION(x,init) #define VLIB_WORKER_INIT_FUNCTION(x) VLIB_DECLARE_INIT_FUNCTION(x,worker_init) #define VLIB_MAIN_LOOP_ENTER_FUNCTION(x) \ VLIB_DECLARE_INIT_FUNCTION(x,main_loop_enter) #define VLIB_MAIN_LOOP_EXIT_FUNCTION(x) \ VLIB_DECLARE_INIT_FUNCTION(x,main_loop_exit) #ifndef CLIB_MARCH_VARIANT #define VLIB_CONFIG_FUNCTION(x,n,...) \ __VA_ARGS__ vlib_config_function_runtime_t \ VLIB_CONFIG_FUNCTION_SYMBOL(x); \ static void __vlib_add_config_function_##x (void) \ __attribute__((__constructor__)) ; \ static void __vlib_add_config_function_##x (void) \ { \ vlib_main_t * vm = vlib_get_main(); \ VLIB_CONFIG_FUNCTION_SYMBOL(x).next_registration \ = vm->config_function_registrations; \ vm->config_function_registrations \ = &VLIB_CONFIG_FUNCTION_SYMBOL(x); \ } \ static void __vlib_rm_config_function_##x (void) \ __attribute__((__destructor__)) ; \ static void __vlib_rm_config_function_##x (void) \ { \ vlib_main_t * vm = vlib_get_main(); \ vlib_config_function_runtime_t *p = \ & VLIB_CONFIG_FUNCTION_SYMBOL (x); \ VLIB_REMOVE_FROM_LINKED_LIST \ (vm->config_function_registrations, p, next_registration);\ } \ vlib_config_function_runtime_t \ VLIB_CONFIG_FUNCTION_SYMBOL (x) \ = { \ .name = n, \ .function = x, \ .is_early = 0, \ } #else /* create unused pointer to silence compiler warnings and get whole function optimized out */ #define VLIB_CONFIG_FUNCTION(x,n,...) \ static __clib_unused vlib_config_function_runtime_t \ VLIB_CONFIG_FUNCTION_SYMBOL (__clib_unused_##x) \ = { \ .name = n, \ .function = x, \ .is_early = 0, \ } #endif #ifndef CLIB_MARCH_VARIANT #define VLIB_EARLY_CONFIG_FUNCTION(x,n,...) \ __VA_ARGS__ vlib_config_function_runtime_t \ VLIB_CONFIG_FUNCTION_SYMBOL(x); \ static void __vlib_add_config_function_##x (void) \ __attribute__((__constructor__)) ; \ static void __vlib_add_config_function_##x (void) \ { \ vlib_main_t * vm = vlib_get_main(); \ VLIB_CONFIG_FUNCTION_SYMBOL(x).next_registration \ = vm->config_function_registrations; \ vm->config_function_registrations \ = &VLIB_CONFIG_FUNCTION_SYMBOL(x); \ } \ static void __vlib_rm_config_function_##x (void) \ __attribute__((__destructor__)) ; \ static void __vlib_rm_config_function_##x (void) \ { \ vlib_main_t * vm = vlib_get_main(); \ vlib_config_function_runtime_t *p = \ & VLIB_CONFIG_FUNCTION_SYMBOL (x); \ VLIB_REMOVE_FROM_LINKED_LIST \ (vm->config_function_registrations, p, next_registration);\ } \ vlib_config_function_runtime_t \ VLIB_CONFIG_FUNCTION_SYMBOL (x) \ = { \ .name = n, \ .function = x, \ .is_early = 1, \ } #else /* create unused pointer to silence compiler warnings and get whole function optimized out */ #define VLIB_EARLY_CONFIG_FUNCTION(x,n,...) \ static __clib_unused vlib_config_function_runtime_t \ VLIB_CONFIG_FUNCTION_SYMBOL (__clib_unused_##x) \ = { \ .name = n, \ .function = x, \ .is_early = 1, \ } #endif /* Call given init function: used for init function dependencies. */ #define vlib_call_init_function(vm, x) \ ({ \ extern vlib_init_function_t * VLIB_INIT_FUNCTION_SYMBOL (x); \ vlib_init_function_t * _f = VLIB_INIT_FUNCTION_SYMBOL (x); \ clib_error_t * _error = 0; \ if (! hash_get (vm->init_functions_called, _f)) \ { \ hash_set1 (vm->init_functions_called, _f); \ _error = _f (vm); \ } \ _error; \ }) /* Don't call given init function: used to suppress parts of the netstack */ #define vlib_mark_init_function_complete(vm, x) \ ({ \ extern vlib_init_function_t * VLIB_INIT_FUNCTION_SYMBOL (x); \ vlib_init_function_t * _f = VLIB_INIT_FUNCTION_SYMBOL (x); \ hash_set1 (vm->init_functions_called, _f); \ }) #define vlib_call_post_graph_init_function(vm, x) \ ({ \ extern vlib_init_function_t * VLIB_POST_GRAPH_INIT_FUNCTION_SYMBOL (x); \ vlib_init_function_t * _f = VLIB_POST_GRAPH_INIT_FUNCTION_SYMBOL (x); \ clib_error_t * _error = 0; \ if (! hash_get (vm->init_functions_called, _f)) \ { \ hash_set1 (vm->init_functions_called, _f); \ _error = _f (vm); \ } \ _error; \ }) #define vlib_call_config_function(vm, x) \ ({ \ vlib_config_function_runtime_t * _r; \ clib_error_t * _error = 0; \ extern vlib_config_function_runtime_t \ VLIB_CONFIG_FUNCTION_SYMBOL (x); \ \ _r = &VLIB_CONFIG_FUNCTION_SYMBOL (x); \ if (! hash_get (vm->init_functions_called, _r->function)) \ { \ hash_set1 (vm->init_functions_called, _r->function); \ _error = _r->function (vm, &_r->input); \ } \ _error; \ }) /* External functions. */ clib_error_t *vlib_call_all_init_functions (struct vlib_main_t *vm); clib_error_t *vlib_call_all_config_functions (struct vlib_main_t *vm, unformat_input_t * input, int is_early); clib_error_t *vlib_call_all_main_loop_enter_functions (struct vlib_main_t *vm); clib_error_t *vlib_call_all_main_loop_exit_functions (struct vlib_main_t *vm); clib_error_t *vlib_call_init_exit_functions (struct vlib_main_t *vm, _vlib_init_function_list_elt_t * head, int call_once); #define foreach_vlib_module_reference \ _ (node_cli) \ _ (trace_cli) /* Dummy function to get node_cli.c linked in. */ #define _(x) void vlib_##x##_reference (void); foreach_vlib_module_reference #undef _ #endif /* included_vlib_init_h */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */