cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

netlink.c (737B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2#include <linux/netlink.h>
      3#include <linux/rtnetlink.h>
      4#include <linux/types.h>
      5#include <net/net_namespace.h>
      6#include <net/netlink.h>
      7#include <linux/in6.h>
      8#include <net/ip.h>
      9
     10int rtm_getroute_parse_ip_proto(struct nlattr *attr, u8 *ip_proto, u8 family,
     11				struct netlink_ext_ack *extack)
     12{
     13	*ip_proto = nla_get_u8(attr);
     14
     15	switch (*ip_proto) {
     16	case IPPROTO_TCP:
     17	case IPPROTO_UDP:
     18		return 0;
     19	case IPPROTO_ICMP:
     20		if (family != AF_INET)
     21			break;
     22		return 0;
     23#if IS_ENABLED(CONFIG_IPV6)
     24	case IPPROTO_ICMPV6:
     25		if (family != AF_INET6)
     26			break;
     27		return 0;
     28#endif
     29	}
     30	NL_SET_ERR_MSG(extack, "Unsupported ip proto");
     31	return -EOPNOTSUPP;
     32}
     33EXPORT_SYMBOL_GPL(rtm_getroute_parse_ip_proto);