23
23
* Contact the authors at <mandos@recompile.se>.
26
#define _GNU_SOURCE /* program_invocation_short_name */
26
#define _GNU_SOURCE /* asprintf(),
27
program_invocation_short_name */
27
28
#include <stdbool.h> /* bool, false, true */
28
#include <argp.h> /* argp_program_version,
29
argp_program_bug_address,
31
struct argp_state, ARGP_KEY_ARG,
29
#include <stdio.h> /* fprintf(), stderr, FILE, vfprintf */
30
#include <errno.h> /* program_invocation_short_name,
31
errno, perror(), EINVAL, ENOMEM */
32
#include <stdarg.h> /* va_list, va_start */
33
#include <stdlib.h> /* EXIT_SUCCESS */
34
#include <argp.h> /* struct argp_option, error_t, struct
35
argp_state, ARGP_KEY_ARG,
32
36
argp_usage(), ARGP_KEY_END,
33
37
ARGP_ERR_UNKNOWN, struct argp,
34
argp_parse(), ARGP_IN_ORDER */
35
#include <errno.h> /* errno,
36
program_invocation_short_name,
37
error_t, EINVAL, ENOMEM */
38
#include <stdio.h> /* fprintf(), stderr, perror(), FILE,
40
#include <stdarg.h> /* va_list, va_start(), vfprintf() */
41
#include <stdlib.h> /* EXIT_SUCCESS */
39
#include <sysexits.h> /* EX_USAGE, EX_OSERR */
40
#include <netinet/ip.h> /* sa_family_t, AF_INET6, AF_INET */
41
#include <inttypes.h> /* PRIdMAX, intmax_t */
42
43
#include <netlink/netlink.h> /* struct nl_addr, nl_addr_parse(),
44
nl_addr_get_family(), NLM_F_EXCL,
46
#include <stddef.h> /* NULL */
47
#include <netlink/route/route.h>/* struct rtnl_route,
48
struct rtnl_nexthop, NETLINK_ROUTE,
50
rtnl_route_set_family(),
51
rtnl_route_set_protocol(),
53
rtnl_route_set_scope(),
55
rtnl_route_set_type(), RTN_UNICAST,
57
rtnl_route_set_table(),
59
rtnl_route_nh_alloc(),
60
rtnl_route_nh_set_ifindex(),
61
rtnl_route_add_nexthop(),
65
rtnl_route_nh_free() */
47
#include <netlink/route/route.h> /* struct rtnl_route,
50
rtnl_route_set_family(),
51
rtnl_route_set_protocol(),
53
rtnl_route_set_scope(),
55
rtnl_route_set_type(),
58
rtnl_route_set_table(),
60
rtnl_route_nh_alloc(),
61
rtnl_route_nh_set_ifindex(),
62
rtnl_route_add_nexthop(),
66
rtnl_route_nh_free() */
66
67
#include <netlink/socket.h> /* struct nl_sock, nl_socket_alloc(),
67
68
nl_connect(), nl_socket_free() */
68
#include <strings.h> /* strcasecmp() */
69
#include <sys/socket.h> /* AF_UNSPEC, AF_INET6, AF_INET */
70
#include <sysexits.h> /* EX_USAGE, EX_OSERR */
71
#include <netlink/route/link.h> /* struct rtnl_link,
72
rtnl_link_get_kernel(),
69
#include <netlink/route/link.h> /* rtnl_link_get_kernel(),
73
70
rtnl_link_get_ifindex(),
75
#include <netinet/in.h> /* sa_family_t */
76
#include <inttypes.h> /* PRIdMAX, intmax_t */
77
#include <stdint.h> /* uint8_t */
80
73
bool debug = false;
81
74
const char *argp_program_version = "mandos-client-iprouteadddel " VERSION;