(root)/
glibc-2.38/
sysdeps/
unix/
sysv/
linux/
netlinkaccess.h
       1  /* Copyright (C) 2004-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #ifndef _NETLINKACCESS_H
      19  #define _NETLINKACCESS_H 1
      20  
      21  #include <stdint.h>
      22  #include <sys/types.h>
      23  #include <asm/types.h>
      24  #include <linux/netlink.h>
      25  #include <linux/rtnetlink.h>
      26  
      27  
      28  struct netlink_res
      29  {
      30    struct netlink_res *next;
      31    struct nlmsghdr *nlh;
      32    size_t size;			/* Size of response.  */
      33    uint32_t seq;			/* sequential number we used.  */
      34  };
      35  
      36  
      37  struct netlink_handle
      38  {
      39    int fd;			/* Netlink file descriptor.  */
      40    pid_t pid;			/* Process ID.  */
      41    uint32_t seq;			/* The sequence number we use currently.  */
      42    struct netlink_res *nlm_list;	/* Pointer to list of responses.  */
      43    struct netlink_res *end_ptr;	/* For faster append of new entries.  */
      44  };
      45  
      46  
      47  extern int __netlink_open (struct netlink_handle *h) attribute_hidden;
      48  extern void __netlink_close (struct netlink_handle *h) attribute_hidden;
      49  extern void __netlink_free_handle (struct netlink_handle *h)
      50       attribute_hidden;
      51  extern int __netlink_request (struct netlink_handle *h, int type)
      52       attribute_hidden;
      53  
      54  /* Terminate the process if RESULT is an invalid recvmsg result for
      55     the netlink socket FD.  */
      56  void __netlink_assert_response (int fd, ssize_t result);
      57  libc_hidden_proto (__netlink_assert_response)
      58  
      59  #endif /* netlinkaccess.h */