summaryrefslogtreecommitdiff
path: root/sbin/ipsec/rt/rt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/ipsec/rt/rt.c')
-rw-r--r--sbin/ipsec/rt/rt.c147
1 files changed, 0 insertions, 147 deletions
diff --git a/sbin/ipsec/rt/rt.c b/sbin/ipsec/rt/rt.c
deleted file mode 100644
index 3e4cfd3129a..00000000000
--- a/sbin/ipsec/rt/rt.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * The author of this code is John Ioannidis, ji@tla.org,
- * (except when noted otherwise).
- *
- * This code was written for BSD/OS in Athens, Greece, in November 1995.
- *
- * Ported to OpenBSD and NetBSD, with additional transforms, in December 1996,
- * by Angelos D. Keromytis, kermit@forthnet.gr.
- *
- * Copyright (C) 1995, 1996, 1997 by John Ioannidis and Angelos D. Keromytis.
- *
- * Permission to use, copy, and modify this software without fee
- * is hereby granted, provided that this entire notice is included in
- * all copies of any software which is or includes a copy or
- * modification of this software.
- *
- * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTY. IN PARTICULAR, NEITHER AUTHOR MAKES ANY
- * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
- * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
- * PURPOSE.
- */
-
-#include <sys/param.h>
-#include <sys/file.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-#include <sys/mbuf.h>
-#include <sys/sysctl.h>
-
-#include <net/if.h>
-#include <net/route.h>
-#include <net/if_dl.h>
-#include <netinet/in.h>
-#include <netns/ns.h>
-#include <netiso/iso.h>
-#include <netccitt/x25.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-
-#include <errno.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <paths.h>
-
-
-#define INET
-#include "net/encap.h"
-
-char buf[2048];
-
-int
-main(int argc, char **argv)
-{
- struct sockaddr_encap *dst, *msk, *gw;
- struct rt_msghdr *rtm;
- int sd, proto;
-
- if (argc != 11)
- fprintf(stderr, "usage: %s isrc isrcmask idst idstmask tproto sport dport raddr spi fespah\n", argv[0]), exit(1);
-
- switch(argv[10][0]) {
- case '0':
- proto = IPPROTO_AH;
- break;
- case '1':
- proto = IPPROTO_ESP;
- break;
- case '-':
- proto = 0;
- break;
- case 'p':
- proto = atoi(argv[10]+1);
- break;
- default:
- fprintf(stderr, "flag fespah: wrong value %s\n", argv[10]);
- exit(-1);
- }
-
-
- sd = socket(PF_ROUTE, SOCK_RAW, AF_UNSPEC);
- if (sd < 0)
- perror("socket"), exit(1);
-
- rtm = (struct rt_msghdr *)(&buf[0]);
- dst = (struct sockaddr_encap *) (&buf[sizeof (*rtm)]);
- gw = (struct sockaddr_encap *) (&buf[sizeof (*rtm) + SENT_IP4_LEN]);
- msk = (struct sockaddr_encap *) (&buf[sizeof (*rtm) + SENT_IP4_LEN +
- SENT_IPSP_LEN]);
-
- rtm->rtm_version = RTM_VERSION;
- rtm->rtm_type = RTM_ADD;
- rtm->rtm_index = 0;
- rtm->rtm_pid = getpid();
- rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK /* | RTA_IFP */;
- rtm->rtm_errno = 0;
- rtm->rtm_flags = RTF_UP | RTF_GATEWAY | RTF_STATIC;
- rtm->rtm_inits = 0;
-
- dst->sen_len = SENT_IP4_LEN;
- dst->sen_family = AF_ENCAP;
- dst->sen_type = SENT_IP4;
- dst->sen_ip_src.s_addr = inet_addr(argv[1]);
- dst->sen_ip_dst.s_addr = inet_addr(argv[3]);
- dst->sen_proto = dst->sen_sport = dst->sen_dport = 0;
-
- if (atoi(argv[5]) > 0)
- {
- dst->sen_proto = atoi(argv[5]);
- msk->sen_proto = 0xff;
-
- if (atoi(argv[6]) > 0)
- {
- dst->sen_sport = atoi(argv[6]);
- msk->sen_sport = 0xffff;
- }
-
- if (atoi(argv[7]) > 0)
- {
- dst->sen_dport = atoi(argv[7]);
- msk->sen_dport = 0xffff;
- }
- }
-
- gw->sen_len = SENT_IPSP_LEN;
- gw->sen_family = AF_ENCAP;
- gw->sen_type = SENT_IPSP;
- gw->sen_ipsp_dst.s_addr = inet_addr(argv[8]);
- gw->sen_ipsp_spi = htonl(strtoul(argv[9], NULL, 16));
- gw->sen_ipsp_sproto = proto;
-
- msk->sen_len = SENT_IP4_LEN;
- msk->sen_family = AF_ENCAP;
- msk->sen_type = SENT_IP4;
- msk->sen_ip_src.s_addr = inet_addr(argv[2]);
- msk->sen_ip_dst.s_addr = inet_addr(argv[4]);
-
- rtm->rtm_msglen = sizeof(*rtm) + dst->sen_len + gw->sen_len +
- msk->sen_len;
-
- if (write(sd, (caddr_t) buf, rtm->rtm_msglen) < 0)
- perror("write");
- exit(0);
-}