1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Zebra SRv6 definitions
4 * Copyright (C) 2020 Hiroki Shirokura, LINE Corporation
11 #include <arpa/inet.h>
12 #include <netinet/in.h>
19 /* SRv6 instance structure. */
21 struct list
*locators
;
24 /* declare hooks for the basic API, so that it can be specialized or served
25 * externally. Also declare a hook when those functions have been registered,
26 * so that any external module wanting to replace those can react
29 DECLARE_HOOK(srv6_manager_client_connect
,
30 (struct zserv
*client
, vrf_id_t vrf_id
),
32 DECLARE_HOOK(srv6_manager_client_disconnect
,
33 (struct zserv
*client
), (client
));
34 DECLARE_HOOK(srv6_manager_get_chunk
,
35 (struct srv6_locator
**loc
,
37 const char *locator_name
,
39 (mc
, client
, keep
, size
, base
, vrf_id
));
40 DECLARE_HOOK(srv6_manager_release_chunk
,
41 (struct zserv
*client
,
42 const char *locator_name
,
44 (client
, locator_name
, vrf_id
));
47 extern void zebra_srv6_locator_add(struct srv6_locator
*locator
);
48 extern void zebra_srv6_locator_delete(struct srv6_locator
*locator
);
49 extern struct srv6_locator
*zebra_srv6_locator_lookup(const char *name
);
51 void zebra_notify_srv6_locator_add(struct srv6_locator
*locator
);
52 void zebra_notify_srv6_locator_delete(struct srv6_locator
*locator
);
54 extern void zebra_srv6_init(void);
55 extern struct zebra_srv6
*zebra_srv6_get_default(void);
56 extern bool zebra_srv6_is_enable(void);
58 extern void srv6_manager_client_connect_call(struct zserv
*client
,
60 extern void srv6_manager_get_locator_chunk_call(struct srv6_locator
**loc
,
62 const char *locator_name
,
64 extern void srv6_manager_release_locator_chunk_call(struct zserv
*client
,
65 const char *locator_name
,
67 extern int srv6_manager_client_disconnect_cb(struct zserv
*client
);
68 extern int release_daemon_srv6_locator_chunks(struct zserv
*client
);
70 #endif /* _ZEBRA_SRV6_H */