1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */ 2*4dc78e53SAndroid Build Coastguard Worker /* 3*4dc78e53SAndroid Build Coastguard Worker * Copyright (c) 2008-2009 Thomas Graf <[email protected]> 4*4dc78e53SAndroid Build Coastguard Worker */ 5*4dc78e53SAndroid Build Coastguard Worker 6*4dc78e53SAndroid Build Coastguard Worker /** 7*4dc78e53SAndroid Build Coastguard Worker * @ingroup cli 8*4dc78e53SAndroid Build Coastguard Worker * @defgroup cli_rule Routing Rules 9*4dc78e53SAndroid Build Coastguard Worker * 10*4dc78e53SAndroid Build Coastguard Worker * @{ 11*4dc78e53SAndroid Build Coastguard Worker */ 12*4dc78e53SAndroid Build Coastguard Worker 13*4dc78e53SAndroid Build Coastguard Worker #include "nl-default.h" 14*4dc78e53SAndroid Build Coastguard Worker 15*4dc78e53SAndroid Build Coastguard Worker #include <netlink/cli/utils.h> 16*4dc78e53SAndroid Build Coastguard Worker #include <netlink/cli/rule.h> 17*4dc78e53SAndroid Build Coastguard Worker nl_cli_rule_alloc(void)18*4dc78e53SAndroid Build Coastguard Workerstruct rtnl_rule *nl_cli_rule_alloc(void) 19*4dc78e53SAndroid Build Coastguard Worker { 20*4dc78e53SAndroid Build Coastguard Worker struct rtnl_rule *rule; 21*4dc78e53SAndroid Build Coastguard Worker 22*4dc78e53SAndroid Build Coastguard Worker rule = rtnl_rule_alloc(); 23*4dc78e53SAndroid Build Coastguard Worker if (!rule) 24*4dc78e53SAndroid Build Coastguard Worker nl_cli_fatal(ENOMEM, "Unable to allocate rule object"); 25*4dc78e53SAndroid Build Coastguard Worker 26*4dc78e53SAndroid Build Coastguard Worker return rule; 27*4dc78e53SAndroid Build Coastguard Worker } 28*4dc78e53SAndroid Build Coastguard Worker nl_cli_rule_alloc_cache(struct nl_sock * sk)29*4dc78e53SAndroid Build Coastguard Workerstruct nl_cache *nl_cli_rule_alloc_cache(struct nl_sock *sk) 30*4dc78e53SAndroid Build Coastguard Worker { 31*4dc78e53SAndroid Build Coastguard Worker struct nl_cache *cache; 32*4dc78e53SAndroid Build Coastguard Worker int err; 33*4dc78e53SAndroid Build Coastguard Worker 34*4dc78e53SAndroid Build Coastguard Worker if ((err = rtnl_rule_alloc_cache(sk, AF_UNSPEC, &cache)) < 0) 35*4dc78e53SAndroid Build Coastguard Worker nl_cli_fatal(err, "Unable to allocate routing rule cache: %s\n", 36*4dc78e53SAndroid Build Coastguard Worker nl_geterror(err)); 37*4dc78e53SAndroid Build Coastguard Worker 38*4dc78e53SAndroid Build Coastguard Worker nl_cache_mngt_provide(cache); 39*4dc78e53SAndroid Build Coastguard Worker 40*4dc78e53SAndroid Build Coastguard Worker return cache; 41*4dc78e53SAndroid Build Coastguard Worker } 42*4dc78e53SAndroid Build Coastguard Worker nl_cli_rule_parse_family(struct rtnl_rule * rule,char * arg)43*4dc78e53SAndroid Build Coastguard Workervoid nl_cli_rule_parse_family(struct rtnl_rule *rule, char *arg) 44*4dc78e53SAndroid Build Coastguard Worker { 45*4dc78e53SAndroid Build Coastguard Worker int family; 46*4dc78e53SAndroid Build Coastguard Worker 47*4dc78e53SAndroid Build Coastguard Worker if ((family = nl_str2af(arg)) != AF_UNSPEC) 48*4dc78e53SAndroid Build Coastguard Worker rtnl_rule_set_family(rule, family); 49*4dc78e53SAndroid Build Coastguard Worker } 50*4dc78e53SAndroid Build Coastguard Worker 51*4dc78e53SAndroid Build Coastguard Worker /** @} */ 52