aboutsummaryrefslogtreecommitdiff
path: root/src/flowlabel.h
blob: 25070c60d1a71f140b526d5d6c87694103864f15 (plain)
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
/*      
 * Copyright (c) 2009-2011, The Regents of the University of California, 
 * through Lawrence Berkeley National Laboratory (subject to receipt of any
 * required approvals from the U.S. Dept. of Energy).  All rights reserved.
 * This code is distributed under a BSD style license, see the LICENSE file
 * for complete information.                                                                                 
 */

#ifndef        __FLOW_LABEL_H
#define        __FLOW_LABEL_H


#include <linux/types.h>

/*                                                                                                                                                                             
   It is just a stripped copy of the Linux kernel header "linux/in6.h" 
   "Flow label" things are still not defined in "netinet/in*.h" headers,
   but we cannot use "linux/in6.h" immediately because it currently
   conflicts with "netinet/in.h" .
*/

struct in6_flowlabel_req
{
    struct in6_addr flr_dst;
    __u32   flr_label;
    __u8    flr_action;
    __u8    flr_share;
    __u16   flr_flags;
    __u16   flr_expires;
    __u16   flr_linger;
    __u32   __flr_pad;
    /* Options in format of IPV6_PKTOPTIONS */
};

#define IPV6_FL_A_GET           0
#define IPV6_FL_A_PUT           1
#define IPV6_FL_A_RENEW         2

#define IPV6_FL_F_CREATE        1
#define IPV6_FL_F_EXCL          2

#define IPV6_FL_S_NONE          0
#define IPV6_FL_S_EXCL          1
#define IPV6_FL_S_PROCESS       2
#define IPV6_FL_S_USER          3
#define IPV6_FL_S_ANY           255

#define IPV6_FLOWINFO_FLOWLABEL 0x000fffff
#define IPV6_FLOWINFO_PRIORITY  0x0ff00000

#define IPV6_FLOWLABEL_MGR      32
#define IPV6_FLOWINFO_SEND      33

#endif