This file is indexed.

/usr/share/ada/adainclude/anet/anet-sockets-netlink.ads is in libanet0.3.1-dev 0.3.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
--
--  Copyright (C) 2012 secunet Security Networks AG
--  Copyright (C) 2012 Reto Buerki <reet@codelabs.ch>
--  Copyright (C) 2012 Adrian-Ken Rueegsegger <ken@codelabs.ch>
--
--  This program is free software; you can redistribute it and/or modify it
--  under the terms of the GNU General Public License as published by the
--  Free Software Foundation; either version 2 of the License, or (at your
--  option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
--
--  This program is distributed in the hope that it will be useful, but
--  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
--  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
--  for more details.
--
--  As a special exception, if other files instantiate generics from this
--  unit,  or  you  link  this  unit  with  other  files  to  produce  an
--  executable   this  unit  does  not  by  itself  cause  the  resulting
--  executable to  be  covered by the  GNU General  Public License.  This
--  exception does  not  however  invalidate  any  other reasons why  the
--  executable file might be covered by the GNU Public License.
--

package Anet.Sockets.Netlink is

   subtype Netlink_Addr_Type is Natural;
   --  Netlink address.

   type Protocol_Type is
     (Proto_Netlink_Route,
      Proto_Netlink_Firewall,
      Proto_Netlink_Inet_Diag,
      Proto_Netlink_Nflog,
      Proto_Netlink_Xfrm,
      Proto_Netlink_Selinux,
      Proto_Netlink_Audit,
      Proto_Netlink_Netfilter,
      Proto_Netlink_Crypto);
   --  Netlink protocols.

   type Group_Type is
     (Group_Xfrm_None,
      Group_Xfrm_Acquire,
      Group_Xfrm_Expire,
      Group_Xfrm_Sa,
      Group_Xfrm_Policy,
      Group_Xfrm_Aevents,
      Group_Xfrm_Report,
      Group_Xfrm_Migrate,
      Group_Xfrm_Mapping);
   --  Supported Netlink multicast groups.

   type Group_Array is array (Positive range <>) of Group_Type;
   --  Array of Netlink multicast groups.

   No_Groups : constant Group_Array;

   type Netlink_Socket_Type is abstract new Socket_Type with private;
   --  Netlink socket.

   procedure Bind
     (Socket  : in out Netlink_Socket_Type;
      Address :        Netlink_Addr_Type;
      Groups  :        Group_Array := No_Groups);
   --  Bind given Netlink socket to the specified Netlink address (which is
   --  normally the pid of the application) and optional Netlink multicast
   --  groups (requires root permissions).

   procedure Send
     (Socket : Netlink_Socket_Type;
      Item   : Ada.Streams.Stream_Element_Array;
      To     : Netlink_Addr_Type);
   --  Send data over a Netlink socket to the given Netlink address.

   procedure Receive
     (Socket :     Netlink_Socket_Type;
      Src    : out Netlink_Addr_Type;
      Item   : out Ada.Streams.Stream_Element_Array;
      Last   : out Ada.Streams.Stream_Element_Offset);
   --  Receive data from given Netlink socket. Last is the index value which
   --  designates the last stream element in data. The source Netlink address
   --  specifies the sender of the Netlink message.

   type Raw_Socket_Type is new Netlink_Socket_Type
     and Dgram_Socket_Type with private;
   --  Raw/Netlink socket. It extends the datagram socket type because (1)
   --  Netlink is a datagram-oriented service and (2) because it also behaves
   --  like a datagram socket from an interface perspective. This allows to use
   --  the Raw/Netlink socket with a datagram receiver instance.

   procedure Init
     (Socket   : in out Raw_Socket_Type;
      Protocol :        Protocol_Type);
   --  Initialize Raw/Netlink socket using the specified protocol.

private

   No_Groups : constant Group_Array (1 .. 1) := (1 => Group_Xfrm_None);

   type Netlink_Socket_Type is abstract new Socket_Type with null record;

   type Raw_Socket_Type is new Netlink_Socket_Type
     and Dgram_Socket_Type with null record;

end Anet.Sockets.Netlink;