This file is indexed.

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

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
--
--  Copyright (C) 2012-2013 secunet Security Networks AG
--  Copyright (C) 2012-2013 Reto Buerki <reet@codelabs.ch>
--  Copyright (C) 2012-2013 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.
--

with Anet.Types;

package Anet.Sockets.Packet is

   subtype Ether_Addr_Type is Hardware_Addr_Type (1 .. 6);
   --  Ethernet address.

   type Protocol_Type is
     (Proto_Packet_Ip,
      Proto_Packet_All);
   --  Packet protocols.

   type Packet_Socket_Type is abstract new Socket_Type with private;
   --  Packet socket.

   procedure Bind
     (Socket : in out Packet_Socket_Type;
      Iface  :        Types.Iface_Name_Type);
   --  Bind given packet socket to specified interface.

   procedure Send
     (Socket : Packet_Socket_Type;
      Item   : Ada.Streams.Stream_Element_Array;
      To     : Hardware_Addr_Type;
      Iface  : Types.Iface_Name_Type);
   --  Send data on packet socket to given hardware address over interface
   --  specified by name.

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

   type UDP_Socket_Type is new Packet_Socket_Type
     and Dgram_Socket_Type with private;
   --  Packet socket in datagram mode.

   procedure Init
     (Socket   : in out UDP_Socket_Type;
      Protocol :        Protocol_Type := Proto_Packet_Ip);
   --  Initialize given Packet/UDP socket.

   type Raw_Socket_Type is new Packet_Socket_Type
     and Dgram_Socket_Type with private;
   --  Packet socket in raw mode (link level headers not stripped). Behaves
   --  like a datagram socket from an interface perspective.

   procedure Init
     (Socket   : in out Raw_Socket_Type;
      Protocol :        Protocol_Type := Proto_Packet_All);
   --  Initialize given Packet/Raw socket.

private

   type Packet_Socket_Type is abstract new Socket_Type with null record;

   type UDP_Socket_Type is new Packet_Socket_Type
     and Dgram_Socket_Type with null record;

   type Raw_Socket_Type is new Packet_Socket_Type
     and Dgram_Socket_Type with null record;

end Anet.Sockets.Packet;