File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / freevrrpd / vrrp_ah.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 14 12:01:54 2017 UTC (6 years, 11 months ago) by misho
Branches: freevrrpd, MAIN
CVS tags: v1_1, HEAD
freevrrpd 1.1

    1: /* $Id: vrrp_ah.h,v 1.1.1.1 2017/06/14 12:01:54 misho Exp $ 
    2:  * MAGIC HEADER $#@!$#!@$!@$@!# :)
    3:  */
    4: #ifndef __VRRP_AH_H__
    5: #define __VRRP_AH_H__
    6: #include <stdio.h>
    7: #include <unistd.h>
    8: #include <stdlib.h>
    9: #include <string.h>
   10: #include <netdb.h>
   11: #include <sys/types.h>
   12: #include <sys/socket.h>
   13: #include <netinet/in.h>
   14: #include <arpa/inet.h>
   15: #include <net/route.h>
   16: #include <netinet/in_systm.h>
   17: #include <netinet/ip.h>
   18: #ifdef KAME_BASED
   19: #include <netinet6/ipsec.h>
   20: #include <net/pfkeyv2.h>
   21: #include <netkey/keydb.h>
   22: #include <netkey/key_debug.h>
   23: #endif /* end of KAME BASED */
   24: /* #include "md5.h" */
   25: 
   26: #define HMAC_MD596_SIZE 12
   27: 
   28: /* AH header struct for a keepalived implementation */
   29: typedef struct ah_header {
   30:     char next;		    /* must be 112 for IPPROTO_VRRP */
   31:     char length;	    /* must be 3 (96 bits tronqued MD5 sum */
   32:     unsigned short zero;
   33:     int spi;		    /* will store the VIP of the current vrid */
   34:     int seq;
   35:     char auth[HMAC_MD596_SIZE];	    /* authentication data MD5 sum */
   36: } ah_t;
   37: 
   38: #ifdef KAME_BASED
   39: #define VRRP_OUT_POLICY "out ipsec ah/transport//require"
   40: #define VRRP_IN_POLICY "in ipsec ah/transport//require"
   41: #define VRRP_ADDRESS "224.0.0.18"
   42: #define HOST_MASK 32
   43: #define IPSEC_IPPROTO_VRRP 112
   44: #define IPSEC_IPPROTO_ANY 255
   45: 
   46: /* KAME based AH function headers */
   47: struct addrinfo * parse_addr(char *host, char *port);
   48: int setkeymsg(struct sadb_msg *msg, unsigned int type, unsigned int satype, size_t l);
   49: int setvarbuf(char *buf, int *off, struct sadb_ext *ebuf, int elen, caddr_t vbuf, int vlen);
   50: int vrrp_pfkey_open(void);
   51: int vrrp_pfkey_close(int fd);
   52: int vrrp_ah_set_outpolicy(int fd, char *src);
   53: int vrrp_ah_rm_outpolicy(int fd, char *src);
   54: int vrrp_ah_set_inpolicy(int fd, char *src);
   55: int vrrp_ah_rm_inpolicy(int fd, char *src);
   56: int vrrp_ah_spd(int fd, char *src_addr, char *ah_policy, unsigned int cmd);
   57: 
   58: #else
   59: 
   60: /* simple AH functions headers */
   61: int vrrp_ah_check_ahhdr(char *buffer, struct vrrp_vr *vr);
   62: void vrrp_ah_init_ahhdr(unsigned char *buffer, struct vrrp_vr *vr);
   63: void vrrp_ah_hmacmd5(unsigned char *buffer, struct vrrp_vr *vr);
   64: #endif /* end of KAME_BASED */
   65: int vrrp_ah_ahhdr_len(struct vrrp_vr *vr);
   66: void hmac_md5(unsigned char *text, int text_len, unsigned char *key, int key_len, caddr_t digest);
   67: int hexdump(unsigned char *zone, int len);
   68: 
   69: #endif

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