File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / bird / sysdep / linux / krt-sys.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Aug 22 12:33:54 2017 UTC (6 years, 10 months ago) by misho
Branches: bird, MAIN
CVS tags: v1_6_8p3, v1_6_3p0, v1_6_3, HEAD
bird 1.6.3

    1: /*
    2:  *	BIRD -- Linux Kernel Netlink Route Syncer
    3:  *
    4:  *	(c) 1998--2000 Martin Mares <mj@ucw.cz>
    5:  *
    6:  *	Can be freely distributed and used under the terms of the GNU GPL.
    7:  */
    8: 
    9: #ifndef _BIRD_KRT_SYS_H_
   10: #define _BIRD_KRT_SYS_H_
   11: 
   12: 
   13: /* Kernel interfaces */
   14: 
   15: struct kif_params {
   16: };
   17: 
   18: struct kif_state {
   19: };
   20: 
   21: 
   22: static inline void kif_sys_init(struct kif_proto *p UNUSED) { }
   23: static inline int kif_sys_reconfigure(struct kif_proto *p UNUSED, struct kif_config *n UNUSED, struct kif_config *o UNUSED) { return 1; }
   24: 
   25: static inline void kif_sys_preconfig(struct config *c UNUSED) { }
   26: static inline void kif_sys_postconfig(struct kif_config *c UNUSED) { }
   27: static inline void kif_sys_init_config(struct kif_config *c UNUSED) { }
   28: static inline void kif_sys_copy_config(struct kif_config *d UNUSED, struct kif_config *s UNUSED) { }
   29: 
   30: static inline struct ifa * kif_get_primary_ip(struct iface *i UNUSED) { return NULL; }
   31: 
   32: 
   33: /* Kernel routes */
   34: 
   35: #define KRT_ALLOW_MERGE_PATHS	1
   36: 
   37: #define EA_KRT_PREFSRC		EA_CODE(EAP_KRT, 0x10)
   38: #define EA_KRT_REALM		EA_CODE(EAP_KRT, 0x11)
   39: #define EA_KRT_SCOPE		EA_CODE(EAP_KRT, 0x12)
   40: 
   41: 
   42: #define KRT_METRICS_MAX		0x10	/* RTAX_QUICKACK+1 */
   43: #define KRT_METRICS_OFFSET	0x20	/* Offset of EA_KRT_* vs RTAX_* */
   44: 
   45: #define KRT_FEATURES_MAX	4
   46: 
   47: /*
   48:  * Following attributes are parts of RTA_METRICS kernel route attribute, their
   49:  * ids must be consistent with their RTAX_* constants (+ KRT_METRICS_OFFSET)
   50:  */
   51: #define EA_KRT_METRICS		EA_CODE(EAP_KRT, 0x20)	/* Dummy one */
   52: #define EA_KRT_LOCK		EA_CODE(EAP_KRT, 0x21)
   53: #define EA_KRT_MTU		EA_CODE(EAP_KRT, 0x22)
   54: #define EA_KRT_WINDOW		EA_CODE(EAP_KRT, 0x23)
   55: #define EA_KRT_RTT		EA_CODE(EAP_KRT, 0x24)
   56: #define EA_KRT_RTTVAR		EA_CODE(EAP_KRT, 0x25)
   57: #define EA_KRT_SSTRESH		EA_CODE(EAP_KRT, 0x26)
   58: #define EA_KRT_CWND		EA_CODE(EAP_KRT, 0x27)
   59: #define EA_KRT_ADVMSS		EA_CODE(EAP_KRT, 0x28)
   60: #define EA_KRT_REORDERING 	EA_CODE(EAP_KRT, 0x29)
   61: #define EA_KRT_HOPLIMIT		EA_CODE(EAP_KRT, 0x2a)
   62: #define EA_KRT_INITCWND		EA_CODE(EAP_KRT, 0x2b)
   63: #define EA_KRT_FEATURES		EA_CODE(EAP_KRT, 0x2c)
   64: #define EA_KRT_RTO_MIN		EA_CODE(EAP_KRT, 0x2d)
   65: #define EA_KRT_INITRWND		EA_CODE(EAP_KRT, 0x2e)
   66: #define EA_KRT_QUICKACK		EA_CODE(EAP_KRT, 0x2f)
   67: 
   68: /* Bits of EA_KRT_LOCK, also based on RTAX_* constants */
   69: #define EA_KRT_LOCK_MTU		EA_KRT_LOCK | EA_BIT(0x2)
   70: #define EA_KRT_LOCK_WINDOW	EA_KRT_LOCK | EA_BIT(0x3)
   71: #define EA_KRT_LOCK_RTT		EA_KRT_LOCK | EA_BIT(0x4)
   72: #define EA_KRT_LOCK_RTTVAR	EA_KRT_LOCK | EA_BIT(0x5)
   73: #define EA_KRT_LOCK_SSTHRESH	EA_KRT_LOCK | EA_BIT(0x6)
   74: #define EA_KRT_LOCK_CWND	EA_KRT_LOCK | EA_BIT(0x7)
   75: #define EA_KRT_LOCK_ADVMSS	EA_KRT_LOCK | EA_BIT(0x8)
   76: #define EA_KRT_LOCK_REORDERING 	EA_KRT_LOCK | EA_BIT(0x9)
   77: #define EA_KRT_LOCK_HOPLIMIT	EA_KRT_LOCK | EA_BIT(0xa)
   78: // define EA_KRT_LOCK_INITCWND	EA_KRT_LOCK | EA_BIT(0xb)
   79: // define EA_KRT_LOCK_FEATURES	EA_KRT_LOCK | EA_BIT(0xc)
   80: #define EA_KRT_LOCK_RTO_MIN	EA_KRT_LOCK | EA_BIT(0xd)
   81: // define EA_KRT_LOCK_INITRWND	EA_KRT_LOCK | EA_BIT(0xe)
   82: 
   83: /* Bits of EA_KRT_FEATURES, based on RTAX_FEATURE_* constants */
   84: #define EA_KRT_FEATURE_ECN	EA_KRT_FEATURES | EA_BIT(0x0)
   85: // define EA_KRT_FEATURE_SACK	EA_KRT_FEATURES | EA_BIT(0x1)
   86: // define EA_KRT_FEATURE_TSTAMP	EA_KRT_FEATURES | EA_BIT(0x2)
   87: #define EA_KRT_FEATURE_ALLFRAG	EA_KRT_FEATURES | EA_BIT(0x3)
   88: 
   89: 
   90: struct krt_params {
   91:   u32 table_id;				/* Kernel table ID we sync with */
   92:   u32 metric;				/* Kernel metric used for all routes */
   93: };
   94: 
   95: struct krt_state {
   96:   struct krt_proto *hash_next;
   97: };
   98: 
   99: 
  100: static inline void krt_sys_init(struct krt_proto *p UNUSED) { }
  101: static inline void krt_sys_preconfig(struct config *c UNUSED) { }
  102: static inline void krt_sys_postconfig(struct krt_config *x UNUSED) { }
  103: 
  104: 
  105: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>