1dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* 2dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 3dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * q_ingress.c INGRESS. 4dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 5dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * This program is free software; you can redistribute it and/or 6dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * modify it under the terms of the GNU General Public License 7dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * as published by the Free Software Foundation; either version 8dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 2 of the License, or (at your option) any later version. 9dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 10dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * Authors: J Hadi Salim 11dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 12dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * This is here just in case it is needed 13dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * useless right now; might be useful in the future 14dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 15dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat */ 16dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 17dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <stdio.h> 18dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <stdlib.h> 19dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <unistd.h> 20dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <syslog.h> 21dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <fcntl.h> 22dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <sys/socket.h> 23dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <netinet/in.h> 24dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <arpa/inet.h> 25dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <string.h> 26dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 27dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include "utils.h" 28dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include "tc_util.h" 29dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 30dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatstatic void explain(void) 31dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat{ 32dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat fprintf(stderr, "Usage: ... ingress \n"); 33dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat} 34dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 35dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatstatic int ingress_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n) 36dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat{ 37dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 38dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat if (argc > 0) { 39dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat while (argc > 0) { 40dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 41dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat if (strcmp(*argv, "handle") == 0) { 42dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat NEXT_ARG(); 43dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat argc--; argv++; 44dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat } else { 45dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat fprintf(stderr, "What is \"%s\"?\n", *argv); 46dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat explain(); 47dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat return -1; 48dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat } 49dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat } 50dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat } 51dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 52dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat addattr_l(n, 1024, TCA_OPTIONS, NULL, 0); 53dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat return 0; 54dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat} 55dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 56dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatstatic int ingress_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt) 57dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat{ 58dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 59dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat fprintf(f, "---------------- "); 60dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat return 0; 61dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat} 62dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat 63dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatstruct qdisc_util ingress_qdisc_util = { 64dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat .id = "ingress", 65dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat .parse_qopt = ingress_parse_opt, 66dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat .print_qopt = ingress_print_opt, 67dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat}; 68