ubuntu-users Digest, Vol 56, Issue 170
wirechief
silvermachineman at gmail.com
Thu Apr 16 15:16:27 UTC 2009
I use RSEIUB when things freeze. heres a howto
http://techpatterns.com/forums/about911.html
helps keeping fs from getting busted with just a power off.
On Thu, Apr 16, 2009 at 8:52 AM, Jose Rodriguez <joheiker at gmail.com> wrote:
>
>
> ------------------------------
>>
>> Message: 3
>> Date: Thu, 16 Apr 2009 01:29:33 -0400
>> From: Matthew Flaschen <matthew.flaschen at gatech.edu>
>> Subject: Re: PC freeze while executing Iproute2
>> To: "Ubuntu user technical support, not for general discussions"
>> <ubuntu-users at lists.ubuntu.com>
>> Message-ID: <49E6C23D.6060806 at gatech.edu>
>> Content-Type: text/plain; charset=UTF-8
>>
>> Jose Rodriguez wrote:
>> > I compiled it and everything was fine but when i use the commands in a
>> > shell
>> > to activate the algorithm it seems like iproute2 accepts the commands
>> > and
>> > parameters i give but then the computer freeze. I cant do anything in
>> > it.
>> > The only thing that works is the led or light of the "caps lock" button.
>> > So
>> > i have to turn it off and turn it on again. I suspect it's a bad use or
>> > memory or something like that. Im asking for some guidance here!!!!!
>> > Where
>> > should i start looking for the problem?? What type of commmand might i
>> > have
>> > used incorrectly??
>>
>> This (debugging private non-standard additions to the kernel) is way
>> outside the scope of this list. Also, I don't know how you expect
>> anyone to seriously help you without the source of your module/patch.
>>
>> Matt Flaschen
>> ------------------------------
>
> I know this kind of things is not what is this list is made of, but you
> never know who can help you man. Maybe one of the readers is a genius or an
> expert in linux kernel but also knows a lot about Ubuntu, hehe! But you
> helped me somehow, i think i know where to start looking for some answer.
> Thnxs!
>
> And for the curious eyes here is the source of what i did and it's giving me
> headaches:
> (Remeber: this code is made for working in iproute2)
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> #include <syslog.h>
> #include <fcntl.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
> #include <string.h>
>
> #include "utils.h"
> #include "tc_util.h"
>
> static void explain(void)
> {
> fprintf(stderr, "Usage: ... pi qmax PKTS qref PKTS a VALUE b VALUE\n");
> }
>
> #define usage() return(-1)
>
> static int pi_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct
> nlmsghdr *n)
> {
> int ok=0;
> struct tc_pi_qopt opt;
> int ecn_ok = 0;
> __u8 sbuf[256];
> struct rtattr *tail;
>
> memset(&opt, 0, sizeof(opt));
>
> while (argc > 0) {
> if (strcmp(*argv, "qmax") == 0) {
> NEXT_ARG();
> if (get_size(&opt.qmax, *argv)) {
> fprintf(stderr, "Illegal \"qmax\"\n");
> return -1;
> }
> ok++;
> } else if (strcmp(*argv, "qref") == 0) {
> NEXT_ARG();
> if (get_size(&opt.qref, *argv)) {
> fprintf(stderr, "Illegal \"qref\"\n");
> return -1;
> }
> ok++;
> } else if (strcmp(*argv, "a") == 0) {
> NEXT_ARG();
> if (get_size(&opt.a, *argv)) {
> fprintf(stderr, "Illegal \"a\"\n");
> return -1;
> }
> ok++;
> } else if (strcmp(*argv, "b") == 0) {
> NEXT_ARG();
> if (get_size(&opt.b, *argv)) {
> fprintf(stderr, "Illegal \"b\"\n");
> return -1;
> }
> ok++;
> } else if (strcmp(*argv, "ecn") == 0) {
> ecn_ok = 1;
> ok++;
> } else if (strcmp(*argv, "help") == 0) {
> explain();
> return -1;
> } else {
> fprintf(stderr, "What is \"%s\"?\n", *argv);
> explain();
> return -1;
> }
> argc--; argv++;
> }
>
> if (!ok)
> return 0;
>
> if (!opt.qmax || !opt.qref || !opt.a || !opt.b) {
> fprintf(stderr, "Required parameter (qmax, qref, a, b) is
> missing\n");
> return -1;
> }
>
> if (ecn_ok) {
> #ifdef TC_RED_ECN
> opt.flags |= TC_PI_ECN;
> #else
> fprintf(stderr, "PI: ECN support is missing in this binary.\n");
> return -1;
> #endif
> }
>
> tail = NLMSG_TAIL(n);
> addattr_l(n, 1024, TCA_OPTIONS, NULL, 0);
> addattr_l(n, 1024, TCA_PI_PARMS, &opt, sizeof(opt));
> addattr_l(n, 1024, TCA_PI_STAB, sbuf, 256);
> tail->rta_len = (void *) NLMSG_TAIL(n) - (void *) tail;
> return 0;
> }
>
> static int pi_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
> {
> struct rtattr *tb[TCA_PI_STAB+1];
> struct tc_pi_qopt *qopt;
> SPRINT_BUF(b1);
> SPRINT_BUF(b2);
> SPRINT_BUF(b3);
> SPRINT_BUF(b4);
>
> if (opt == NULL)
> return 0;
>
> parse_rtattr_nested(tb, TCA_PI_STAB, opt);
>
> if (tb[TCA_PI_PARMS] == NULL)
> return -1;
> qopt = RTA_DATA(tb[TCA_PI_PARMS]);
> if (RTA_PAYLOAD(tb[TCA_PI_PARMS]) < sizeof(*qopt))
> return -1;
> fprintf(f, "qref %s qmax %s a %s b %s ",
> sprint_size(qopt->qref, b1),
> sprint_size(qopt->qmax, b2),
> sprint_size(qopt->a, b3),
> sprint_size(qopt->b, b4));
> #ifdef TC_PI_ECN
> if (qopt->flags & TC_PI_ECN)
> fprintf(f, "ecn ");
> #endif
> return 0;
> }
>
> static int pi_print_xstats(struct qdisc_util *qu, FILE *f, struct rtattr
> *xstats)
> {
> #ifdef TC_RED_ECN
> struct tc_pi_xstats *st;
>
> if (xstats == NULL)
> return 0;
>
> if (RTA_PAYLOAD(xstats) < sizeof(*st))
> return -1;
>
> st = RTA_DATA(xstats);
> fprintf(f, " marked %u early %u pdrop %u other %u",
> st->marked, st->early, st->pdrop, st->other);
> return 0;
>
> #endif
> return 0;
> }
>
>
> struct qdisc_util pi_qdisc_util = {
> .id = "pi",
> .parse_qopt = pi_parse_opt,
> .print_qopt = pi_print_opt,
> .print_xstats = pi_print_xstats,
> };
>
>
>
> --
> A day without sunshine is like, you know...night.
>
> --
> ubuntu-users mailing list
> ubuntu-users at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-users
>
>
--
Reach out and share life, care for others,
More information about the ubuntu-users
mailing list