local.h 3.55 KB
Newer Older
1 2 3 4 5
/*
 * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The OpenAirInterface Software Alliance licenses this file to You under
6
 * the OAI Public License, Version 1.1  (the "License"); you may not use this file
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
 * except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.openairinterface.org/?page_id=698
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *-------------------------------------------------------------------------------
 * For more information about the OpenAirInterface (OAI) Software Alliance:
 *      contact@openairinterface.org
 */

Cedric Roux's avatar
Cedric Roux committed
22
/***************************************************************************
23 24 25
                          local.h  -  description
                             -------------------
    copyright            : (C) 2002 by Eurecom
26 27
    email                : navid.nikaein@eurecom.fr
                          lionel.gauthier@eurecom.fr,
28
                           knopp@eurecom.fr
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
 ***************************************************************************/

#ifndef UE_IP_LOCAL_H
#define UE_IP_LOCAL_H

#include <linux/if_arp.h>
#include <linux/types.h>
#include <linux/spinlock.h>
#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <linux/ipv6.h>
#include <linux/ip.h>
#include <linux/sysctl.h>
#include <linux/timer.h>
#include <linux/unistd.h>
#include <asm/param.h>
//#include <sys/sysctl.h>
#include <linux/udp.h>
#include <linux/tcp.h>
#include <linux/icmp.h>
#include <linux/icmpv6.h>
#include <linux/in.h>
#include <net/ndisc.h>



#include "constant.h"
Lionel Gauthier's avatar
Lionel Gauthier committed
57
#include "platform_types.h"
58 59
#include "sap.h"

60
#define MAKE_VERSION(a,b,c) ((a)*256+(b)*16+(c))
61

Lionel Gauthier's avatar
Lionel Gauthier committed
62
typedef struct ue_ip_priv_s {
63 64 65 66 67
  int                        irq;
  int                        rx_flags;
  struct timer_list          timer;
  spinlock_t                 lock;
  struct net_device_stats    stats;
Lionel Gauthier's avatar
Lionel Gauthier committed
68 69 70
  uint8_t                    retry_limit;
  uint32_t                   timer_establishment;
  uint32_t                   timer_release;
71
  struct sock               *nl_sk;
Lionel Gauthier's avatar
Lionel Gauthier committed
72
  uint8_t                    nlmsg[UE_IP_PRIMITIVE_MAX_LENGTH+sizeof(struct nlmsghdr)];
73
  uint8_t                    xbuffer[UE_IP_PRIMITIVE_MAX_LENGTH]; // transmission buffer
Lionel Gauthier's avatar
Lionel Gauthier committed
74 75
  uint8_t                    rbuffer[UE_IP_PRIMITIVE_MAX_LENGTH]; // reception buffer
} ue_ip_priv_t;
76

Lionel Gauthier's avatar
Lionel Gauthier committed
77
typedef struct ipversion_s {
78
#if defined(__LITTLE_ENDIAN_BITFIELD)
Lionel Gauthier's avatar
Lionel Gauthier committed
79
  uint8_t    reserved:4,
80
             version:4;
81
#else
Lionel Gauthier's avatar
Lionel Gauthier committed
82
  uint8_t    version:4,
83
             reserved:4;
84
#endif
85
} ipversion_t;
86

87 88

typedef struct pdcp_data_req_header_s {
89 90 91 92
  rb_id_t             rb_id;
  sdu_size_t          data_size;
  signed int          inst;
  ip_traffic_type_t   traffic_type;
93
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
94 95 96
  uint32_t sourceL2Id;
  uint32_t destinationL2Id;
#endif
97 98
} pdcp_data_req_header_t;

99
typedef struct pdcp_data_ind_header_s {
100 101 102 103
  rb_id_t             rb_id;
  sdu_size_t          data_size;
  signed int          inst;
  ip_traffic_type_t   dummy_traffic_type;
104
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
105 106 107
  uint32_t sourceL2Id;
  uint32_t destinationL2Id;
#endif
108 109 110 111 112 113 114 115
} pdcp_data_ind_header_t;



extern struct net_device *ue_ip_dev[UE_IP_NB_INSTANCES_MAX];


#endif