ipfw modip [DF|TOS|DSCP|TTL]
Marcelo Araujo
araujobsdport at gmail.com
Tue Mar 4 03:23:08 UTC 2008
Hi all,
I started a work to create a new function called of modip, but I've some
doubts around this implementation.
I created inside of ipfw2.c a case statement called of TOK_SETMODIP, I
check if user passed one of the options(DF,TOS,DSCP,TTL), after set an
int with the respective value.
Now, I need to call O_SETMODIP within ip_fw2.c going with parameter
opmodip, and inside O_SETMODIP I can do a goto to O_SETIPTOSPRE as example.
ipfw2.c:
4913 /* New Implementation MODIP. */
4914 /* [DF|TOS|DSCP|TTL] */
4915 case TOK_SETMODIP: {
4916 int opmodip = 0;
4917 NEED1("need modip [DF|TOS|DSCP|TTL] arg\n");
4918 if (_substrcmp(*av, "DF") == 0 ||
4919 _substrcmp(*av, "df") == 0) {
4920 opmodip = 1;
4921 printf("DF.....\n");
4922 } else if (_substrcmp(*av, "TOS") == 0 ||
4923 _substrcmp(*av, "tos") == 0) {
4924 opmodip = 2;
4925 printf("TOS....\n");
4926 } else if (_substrcmp(*av, "DSCP") == 0 ||
4927 _substrcmp(*av, "dscp") == 0) {
4928 opmodip = 3;
4929 printf("DSCP....\n");
4930 } else if (_substrcmp(*av, "TTL") == 0 ||
4931 _substrcmp(*av, "ttl") == 0) {
4932 opmodip = 4;
4933 printf("TTL....\n");
4934 } else {
4935 opmodip = 0;
4936 printf("0.....\n");
4937 }
4938 fill_cmd(cmd, O_SETMODIP, 0, modip);
4939 ac--; av++;
4940 printf("Value %d\n", opmodip);
4941 break;
4942 }
ip_fw2.c:
3244 /* New Implementation MODIP. */
3245 case O_SETMODIP:
3246 printf("Entry ip_fw2.c\n");
3247 switch (cmd->arg1) {
3248 case 1:
3249 printf("DF\n");
3250 break;
3251 case 2:
3252 printf("TOS\n");
3253 goto O_SETIPTOSPRE;
3254 break;
3255 case 3:
3256 printf("DSCP\n");
3257 break;
3258 case 4:
3259 printf("TTL\n");
3260 break;
3261 default:
3262 printf("0000000\n");
3263 break;
3264 }
When I execute the ipfw with the option I've this output:
island# ipfw add modip
ipfw: need modip [DF|TOS|DSCP|TTL] arg
and
island# ipfw add modip tos
TOS....
ipfw: invalid flag tos
I'd like to pass as follows:
island# ipfw add modip tos flashover ip from any to any
My problem I believe are in fill_cmd().
Somebody can help me with this problem?
Best Regards,
--
Marcelo Araujo (__)
araujo at FreeBSD.org \\\'',)
http://www.FreeBSD.org \/ \ ^
Power To Server. .\. /_)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 187 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-ipfw/attachments/20080304/47f7a1e4/signature.pgp
More information about the freebsd-ipfw
mailing list