18808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf/* 28808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * src/lib/link.c CLI Link Helpers 38808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * 48808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * This library is free software; you can redistribute it and/or 58808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * modify it under the terms of the GNU Lesser General Public 68808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * License as published by the Free Software Foundation version 2.1 78808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * of the License. 88808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * 98808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch> 108808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf */ 118808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 128808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf/** 138808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * @ingroup cli 148808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * @defgroup cli_link Links 158808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * 168808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * @{ 178808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf */ 188808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 198808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <netlink/cli/utils.h> 208808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <netlink/cli/link.h> 218808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 228808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafstruct rtnl_link *nl_cli_link_alloc(void) 238808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf{ 248808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf struct rtnl_link *link; 258808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 268808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf link = rtnl_link_alloc(); 278808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf if (!link) 288808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf nl_cli_fatal(ENOMEM, "Unable to allocate link object"); 298808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 308808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf return link; 318808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 328808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 338808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafvoid nl_cli_link_parse_family(struct rtnl_link *link, char *arg) 348808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf{ 358808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf int family; 368808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 378808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf if ((family = nl_str2af(arg)) == AF_UNSPEC) 388808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf nl_cli_fatal(EINVAL, 398808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf "Unable to translate address family \"%s\"", arg); 408808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 418808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf rtnl_link_set_family(link, family); 428808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 438808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 448808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafvoid nl_cli_link_parse_name(struct rtnl_link *link, char *arg) 458808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf{ 468808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf rtnl_link_set_name(link, arg); 478808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 488808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 498808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafvoid nl_cli_link_parse_mtu(struct rtnl_link *link, char *arg) 508808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf{ 518808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf uint32_t mtu = nl_cli_parse_u32(arg); 528808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf rtnl_link_set_mtu(link, mtu); 538808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 548808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 558808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafvoid nl_cli_link_parse_ifindex(struct rtnl_link *link, char *arg) 568808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf{ 578808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf uint32_t index = nl_cli_parse_u32(arg); 588808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf rtnl_link_set_ifindex(link, index); 598808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 608808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 618808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafvoid nl_cli_link_parse_txqlen(struct rtnl_link *link, char *arg) 628808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf{ 638808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf uint32_t qlen = nl_cli_parse_u32(arg); 648808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf rtnl_link_set_txqlen(link, qlen); 658808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 668808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 678808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafvoid nl_cli_link_parse_weight(struct rtnl_link *link, char *arg) 688808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf{ 698808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf uint32_t weight = nl_cli_parse_u32(arg); 708808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf rtnl_link_set_weight(link, weight); 718808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 728808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 738808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf/** @} */ 74