Beispiel #1
0
bool
__pfq_group_access(int gid, int id, int policy, bool join)
{
        struct pfq_group * that = &pfq_groups[gid];

        if (__pfq_has_joined_group(gid,id))
                return true;

        switch(that->policy)
        {
        case Q_GROUP_PRIVATE:
                return false;

        case Q_GROUP_RESTRICTED:
                return (join == false || policy == Q_GROUP_RESTRICTED) && that->pid == current->tgid;

        case Q_GROUP_SHARED:
                return join == false || policy == Q_GROUP_SHARED;

        case Q_GROUP_UNDEFINED:
                return true;
        }

        return false;
}
Beispiel #2
0
bool
__pfq_group_access(int gid, int id, int policy, bool create)
{
        struct pfq_group * g = pfq_get_group(gid);

        if (!g) {
                pr_devel("[PFQ] get_group: invalid group id %d!\n", gid);
                return false;
        }

        switch(g->policy)
        {
        case Q_POLICY_GROUP_PRIVATE:
                return __pfq_has_joined_group(gid,id);

        case Q_POLICY_GROUP_RESTRICTED:
                return (create == false || policy == Q_POLICY_GROUP_RESTRICTED) && g->pid == current->tgid;

        case Q_POLICY_GROUP_SHARED:
                return create == false || policy == Q_POLICY_GROUP_SHARED;

        case Q_POLICY_GROUP_UNDEFINED:
                return true;
        }

        return false;
}