The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

pim (4)
  • >> pim (4) ( FreeBSD man: Специальные файлы /dev/* )
  • Ключ pim обнаружен в базе ключевых слов.

  • BSD mandoc
     

    NAME

    pim
    
     - Protocol Independent Multicast
    
    
     
    

    SYNOPSIS

    options MROUTING

       #include <sys/types.h>
       #include <sys/socket.h>
       #include <netinet/in.h>
       #include <netinet/ip_mroute.h>
       #include <netinet/pim.h>
    int getsockopt (int s IPPROTO_IP MRT_PIM void *optval socklen_t *optlen);
    int setsockopt (int s IPPROTO_IP MRT_PIM const void *optval socklen_t optlen);
    int getsockopt (int s IPPROTO_IPV6 MRT6_PIM void *optval socklen_t *optlen);
    int setsockopt (int s IPPROTO_IPV6 MRT6_PIM const void *optval socklen_t optlen);
     

    DESCRIPTION

    PIM is the common name for two multicast routing protocols: Protocol Independent Multicast - Sparse Mode (PIM-SM) and Protocol Independent Multicast - Dense Mode (PIM-DM).

    PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base. It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and optionally creates shortest-path trees per source.

    PIM-DM is a multicast routing protocol that uses the underlying unicast routing information base to flood multicast datagrams to all multicast routers. Prune messages are used to prevent future datagrams from propagating to routers with no group membership information.

    Both PIM-SM and PIM-DM are fairly complex protocols, though PIM-SM is much more complex. To enable PIM-SM or PIM-DM multicast routing in a router, the user must enable multicast routing and PIM processing in the kernel (see Sx SYNOPSIS about the kernel configuration options), and must run a PIM-SM or PIM-DM capable user-level process. From developer's point of view, the programming guide described in the Sx Programming Guide section should be used to control the PIM processing in the kernel.  

    Programming Guide

    After a multicast routing socket is open and multicast forwarding is enabled in the kernel (see multicast(4)), one of the following socket options should be used to enable or disable PIM processing in the kernel. Note that those options require certain privilege (i.e., root privilege):
    /* IPv4 */
    int v = 1;        /* 1 to enable, or 0 to disable */
    setsockopt(mrouter_s4, IPPROTO_IP, MRT_PIM, (void *)&v, sizeof(v));
    
    /* IPv6 */
    int v = 1;        /* 1 to enable, or 0 to disable */
    setsockopt(mrouter_s6, IPPROTO_IPV6, MRT6_PIM, (void *)&v, sizeof(v));
    

    After PIM processing is enabled, the multicast-capable interfaces should be added (see multicast(4)). In case of PIM-SM, the PIM-Register virtual interface must be added as well. This can be accomplished by using the following options:

    /* IPv4 */
    struct vifctl vc;
    memset(&vc, 0, sizeof(vc));
    /* Assign all vifctl fields as appropriate */
    ...
    if (is_pim_register_vif)
        vc.vifc_flags |= VIFF_REGISTER;
    setsockopt(mrouter_s4, IPPROTO_IP, MRT_ADD_VIF, (void *)&vc,
               sizeof(vc));
    
    /* IPv6 */
    struct mif6ctl mc;
    memset(&mc, 0, sizeof(mc));
    /* Assign all mif6ctl fields as appropriate */
    ...
    if (is_pim_register_vif)
        mc.mif6c_flags |= MIFF_REGISTER;
    setsockopt(mrouter_s6, IPPROTO_IPV6, MRT6_ADD_MIF, (void *)&mc,
               sizeof(mc));
    

    Sending or receiving of PIM packets can be accomplished by opening first a ``raw socket'' (see socket(2)), with protocol value of IPPROTO_PIM

    /* IPv4 */
    int pim_s4;
    pim_s4 = socket(AF_INET, SOCK_RAW, IPPROTO_PIM);
    
    /* IPv6 */
    int pim_s6;
    pim_s6 = socket(AF_INET6, SOCK_RAW, IPPROTO_PIM);
    

    Then, the following system calls can be used to send or receive PIM packets: sendto(2), sendmsg(2), recvfrom(2), recvmsg(2).  

    SEE ALSO

    getsockopt(2), recvfrom(2), recvmsg(2), sendmsg(2), sendto(2), setsockopt(2), socket(2), inet(4), intro(4), ip(4), multicast(4)  

    STANDARDS

    The PIM-SM protocol is specified in RFC 2362 (to be replaced by draft-ietf-pim-sm-v2-new-* ) . The PIM-DM protocol is specified in draft-ietf-pim-dm-new-v2-* ) .  

    AUTHORS

    An -nosplit The original IPv4 PIM kernel support for IRIX and SunOS-4.x was implemented by An Ahmed Helmy (USC and SGI). Later the code was ported to various BSD flavors and modified by An George Edmond Eddy (Rusty) (ISI), An Hitoshi Asaeda (WIDE Project), and An Pavlin Radoslavov (USC/ISI and ICSI). The IPv6 PIM kernel support was implemented by the KAME project (http://www.kame.net ) and was based on the IPv4 PIM kernel support.

    This manual page was written by An Pavlin Radoslavov (ICSI).


     

    Index

    NAME
    SYNOPSIS
    DESCRIPTION
    Programming Guide
    SEE ALSO
    STANDARDS
    AUTHORS


    Поиск по тексту MAN-ов: 



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor