My wrapper library for the Linux QoS system is coming along nicely. Here are the function calls necessary to add a filter that matches the destination field in the IP header.
filt = classifier_u32_new(); classifier_u32_set_class(filt, class); classifier_u32_set_priority(filt, 5); classifier_u32_set_protocol(filt, IP); classifier_u32_set_interface(filt, 3); classifier_u32_add_match_ip_dst(filt, "x.x.x.x");
if (!qos_classifier_u32_add(con, filt)) { g_print("Adding filter failed.n"); }
I am now trying to figure out how to handle the representation of the currently installed filters and classes in the API. Somehow the application needs a represenation of these things so it can make changes. Since the structure of the qeueing disciplines, classes and filters is very much like a tree I think this may be the best way to go.