github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/sys/linux/socket_netlink_generic_gtp.txt (about)

     1  # Copyright 2019 syzkaller project authors. All rights reserved.
     2  # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  # AF_NETLINK/NETLINK_GENERIC/gtp support.
     5  
     6  # TODO: describe gtp packets in vnet.txt (they go inside of udp packets, see gtp_encap_recv()).
     7  
     8  include <linux/net.h>
     9  include <uapi/linux/netlink.h>
    10  include <uapi/linux/genetlink.h>
    11  include <uapi/linux/if_link.h>
    12  include <uapi/linux/gtp.h>
    13  
    14  resource genl_gtp_family_id[int16]
    15  type msghdr_nl_gtp[CMD] msghdr_netlink[netlink_msg_t[genl_gtp_family_id, genlmsghdr_t[CMD], gtp_genl_policy]]
    16  
    17  syz_genetlink_get_family_id$gtp(name ptr[in, string["gtp"]], fd sock_nl_generic) genl_gtp_family_id
    18  
    19  sendmsg$GTP_CMD_NEWPDP(fd sock_nl_generic, msg ptr[in, msghdr_nl_gtp[GTP_CMD_NEWPDP]], f flags[send_flags])
    20  sendmsg$GTP_CMD_DELPDP(fd sock_nl_generic, msg ptr[in, msghdr_nl_gtp[GTP_CMD_DELPDP]], f flags[send_flags])
    21  sendmsg$GTP_CMD_GETPDP(fd sock_nl_generic, msg ptr[in, msghdr_nl_gtp[GTP_CMD_GETPDP]], f flags[send_flags])
    22  sendmsg$GTP_CMD_ECHOREQ(fd sock_nl_generic, msg ptr[in, msghdr_nl_gtp[GTP_CMD_ECHOREQ]], f flags[send_flags])
    23  
    24  gtp_genl_policy [
    25  # TODO: fuzzer will have hard time getting ifindex of a gtp device (which needs to be created before).
    26  	GTPA_LINK		nlattr[GTPA_LINK, ifindex]
    27  	GTPA_VERSION		nlattr[GTPA_VERSION, int32[GTP_V0:GTP_V1]]
    28  	GTPA_TID		nlattr[GTPA_TID, int64[0:4]]
    29  	GTPA_PEER_ADDRESS	nlattr[GTPA_PEER_ADDRESS, ipv4_addr]
    30  	GTPA_MS_ADDRESS		nlattr[GTPA_MS_ADDRESS, ipv4_addr]
    31  	GTPA_FLOW		nlattr[GTPA_FLOW, int16[0:4]]
    32  	GTPA_NET_NS_FD		nlattr[GTPA_NET_NS_FD, fd_namespace]
    33  	GTPA_I_TEI		nlattr[GTPA_I_TEI, int32[0:4]]
    34  	GTPA_O_TEI		nlattr[GTPA_O_TEI, int32[0:4]]
    35  	GTPA_PEER_ADDR6		nlattr[GTPA_PEER_ADDR6, ipv6_addr]
    36  	GTPA_MS_ADDR6		nlattr[GTPA_MS_ADDR6, ipv6_addr]
    37  	GTPA_FAMILY		nlattr[GTPA_FAMILY, int8[socket_domain]]
    38  ] [varlen]
    39  
    40  gtp_policy_fd [
    41  	udp	sock_udp
    42  	udp6	sock_udp6
    43  ]
    44  
    45  gtp_policy [
    46  	IFLA_GTP_FD0		nlattr[IFLA_GTP_FD0, gtp_policy_fd]
    47  	IFLA_GTP_FD1		nlattr[IFLA_GTP_FD1, gtp_policy_fd]
    48  	IFLA_GTP_PDP_HASHSIZE	nlattr[IFLA_GTP_PDP_HASHSIZE, int32]
    49  	IFLA_GTP_ROLE		nlattr[IFLA_GTP_ROLE, int32[0:2]]
    50  	IFLA_GTP_CREATE_SOCKETS	nlattr[IFLA_GTP_CREATE_SOCKETS, bool8]
    51  	IFLA_GTP_RESTART_COUNT	nlattr[IFLA_GTP_RESTART_COUNT, int8]
    52  	IFLA_GTP_LOCAL		nlattr[IFLA_GTP_LOCAL, ipv4_addr]
    53  	IFLA_GTP_LOCAL6		nlattr[IFLA_GTP_LOCAL6, ipv6_addr]
    54  ] [varlen]