|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <sys/param.h> ! 3: #include <sys/stream.h> ! 4: #include <sys/inio.h> ! 5: ! 6: struct route{ ! 7: int dst; ! 8: int gate; ! 9: }; ! 10: ! 11: main(argc, argv) ! 12: char *argv[]; ! 13: { ! 14: struct route r; ! 15: int fd, usage = 1; ! 16: ! 17: r.gate = 1; ! 18: if(argc > 1){ ! 19: if(strcmp(argv[1], "delete") == 0) { ! 20: r.gate = 0; ! 21: usage = argc != 3; ! 22: } else if(strcmp(argv[1], "add") == 0) ! 23: usage = argc != 4; ! 24: } ! 25: if(usage){ ! 26: fprintf(stderr, "Usage: %s add dest gateway\n", argv[0]); ! 27: fprintf(stderr, " %s delete dest\n", argv[0]); ! 28: exit(1); ! 29: } ! 30: if(strcmp(argv[2], "*") == 0) { ! 31: /* the default gateway */ ! 32: r.dst = 0; ! 33: } else { ! 34: r.dst = in_address(argv[2]); ! 35: if(r.dst == 0 && argv[2][0] != '0'){ ! 36: fprintf(stderr, "%s: unknown host/net\n", argv[2]); ! 37: exit(1); ! 38: } ! 39: } ! 40: if(r.gate != 0) { ! 41: r.gate = in_address(argv[3]); ! 42: if(r.gate == 0){ ! 43: fprintf(stderr, "%s: unknown host/net\n", argv[3]); ! 44: exit(1); ! 45: } ! 46: } ! 47: fd = open("/dev/ip0", 2); ! 48: if(fd < 0){ ! 49: perror("/dev/ip0"); ! 50: exit(1); ! 51: } ! 52: if(ioctl(fd, IPIOROUTE, &r) < 0) ! 53: perror("IPIOROUTE"); ! 54: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.