Listing 1. The vif_device and mfc_cache structures used by the multicast routing code.
  
struct vif_device
{
    /* Device we are using */
    struct net_device     *dev;
    /* Statistics */
    unsigned long    bytes_in,bytes_out;
    unsigned long    pkt_in,pkt_out;
    /* Traffic shaping (NI) */
    unsigned long    rate_limit;
    /* TTL threshold */
    unsigned char    threshold;
    /* Control flags */
    unsigned short    flags;
    /* Addresses(remote for tunnels)*/
    __u32        local,remote;
    /* Physical interface index */
    int        link;
};
struct mfc_cache
{
    /* Next entry on cache line */
    struct mfc_cache *next;
    /* Group the entry belongs to */
    __u32 mfc_mcastgrp;
    /* Source of packet */
    __u32 mfc_origin;
    /* Source interface */
    vifi_t mfc_parent;
    /* Flags on line */
    int mfc_flags;
    union {
        struct {
            unsigned long expires;
            /* Unresolved buffers    */
            struct sk_buff_head unresolved;
        } unres;
        struct {
            unsigned long last_assert;
            int minvif;
            int maxvif;
            unsigned long bytes;
            unsigned long pkt;
            unsigned long wrong_if;
            /* TTL thresholds */
            unsigned char ttls[MAXVIFS];
        } res;
    } mfc_un;
};
  
  
  
  
  
  
  
  
  
    Copyright © 1994 - 2018 Linux Journal.  All rights reserved.