require '_h2ph_pre.ph';

unless(defined(&_LINUX_SKBUFF_H)) {
    eval 'sub _LINUX_SKBUFF_H () {1;}' unless defined(&_LINUX_SKBUFF_H);
    require 'linux/config.ph';
    require 'linux/kernel.ph';
    require 'linux/sched.ph';
    require 'linux/time.ph';
    require 'linux/cache.ph';
    require 'asm/types.ph';
    require 'linux/spinlock.ph';
    require 'linux/mm.ph';
    require 'linux/highmem.ph';
    eval 'sub HAVE_ALLOC_SKB () {1;}' unless defined(&HAVE_ALLOC_SKB);
    eval 'sub HAVE_ALIGNABLE_SKB () {1;}' unless defined(&HAVE_ALIGNABLE_SKB);
    eval 'sub SLAB_SKB () {1;}' unless defined(&SLAB_SKB);
    eval 'sub CHECKSUM_NONE () {0;}' unless defined(&CHECKSUM_NONE);
    eval 'sub CHECKSUM_HW () {1;}' unless defined(&CHECKSUM_HW);
    eval 'sub CHECKSUM_UNNECESSARY () {2;}' unless defined(&CHECKSUM_UNNECESSARY);
    eval 'sub SKB_DATA_ALIGN {
        local($X) = @_;
	    eval q(((($X) + ( &SMP_CACHE_BYTES-1)) & ~( &SMP_CACHE_BYTES-1)));
    }' unless defined(&SKB_DATA_ALIGN);
    eval 'sub SKB_MAX_HEAD {
        local($X) = @_;
	    eval q((( &PAGE_SIZE - ($X) - $sizeof{\'struct skb_shared_info\'})&~( &SMP_CACHE_BYTES-1)));
    }' unless defined(&SKB_MAX_HEAD);
    if(defined(&__i386__)) {
	eval 'sub NET_CALLER {
	    local($arg) = @_;
    	    eval q((*((( &void**)$arg)-1)));
	}' unless defined(&NET_CALLER);
    } else {
	eval 'sub NET_CALLER {
	    local($arg) = @_;
    	    eval q( &__builtin_return_address(0));
	}' unless defined(&NET_CALLER);
    }
    if(defined(&CONFIG_NETFILTER)) {
    }
    eval 'sub MAX_SKB_FRAGS () {6;}' unless defined(&MAX_SKB_FRAGS);
    if(defined(&CONFIG_NETFILTER)) {
	if(defined(&CONFIG_NETFILTER_DEBUG)) {
	}
    }
    if(defined( &CONFIG_HIPPI)) {
    }
    if(defined(&CONFIG_NET_SCHED)) {
    }
    eval 'sub SK_WMEM_MAX () {65535;}' unless defined(&SK_WMEM_MAX);
    eval 'sub SK_RMEM_MAX () {65535;}' unless defined(&SK_RMEM_MAX);
}
1;
