root/net/tipc/eth_media.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. tipc_eth_addr2str
  2. tipc_eth_addr2msg
  3. tipc_eth_raw2addr
  4. tipc_eth_msg2addr

   1 /*
   2  * net/tipc/eth_media.c: Ethernet bearer support for TIPC
   3  *
   4  * Copyright (c) 2001-2007, 2013-2014, Ericsson AB
   5  * Copyright (c) 2005-2008, 2011-2013, Wind River Systems
   6  * All rights reserved.
   7  *
   8  * Redistribution and use in source and binary forms, with or without
   9  * modification, are permitted provided that the following conditions are met:
  10  *
  11  * 1. Redistributions of source code must retain the above copyright
  12  *    notice, this list of conditions and the following disclaimer.
  13  * 2. Redistributions in binary form must reproduce the above copyright
  14  *    notice, this list of conditions and the following disclaimer in the
  15  *    documentation and/or other materials provided with the distribution.
  16  * 3. Neither the names of the copyright holders nor the names of its
  17  *    contributors may be used to endorse or promote products derived from
  18  *    this software without specific prior written permission.
  19  *
  20  * Alternatively, this software may be distributed under the terms of the
  21  * GNU General Public License ("GPL") version 2 as published by the Free
  22  * Software Foundation.
  23  *
  24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  27  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  28  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  29  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  30  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  31  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  32  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  33  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  34  * POSSIBILITY OF SUCH DAMAGE.
  35  */
  36 
  37 #include "core.h"
  38 #include "bearer.h"
  39 
  40 /* Convert Ethernet address (media address format) to string */
  41 static int tipc_eth_addr2str(struct tipc_media_addr *addr,
  42                              char *strbuf, int bufsz)
  43 {
  44         if (bufsz < 18) /* 18 = strlen("aa:bb:cc:dd:ee:ff\0") */
  45                 return 1;
  46 
  47         sprintf(strbuf, "%pM", addr->value);
  48         return 0;
  49 }
  50 
  51 /* Convert from media address format to discovery message addr format */
  52 static int tipc_eth_addr2msg(char *msg, struct tipc_media_addr *addr)
  53 {
  54         memset(msg, 0, TIPC_MEDIA_INFO_SIZE);
  55         msg[TIPC_MEDIA_TYPE_OFFSET] = TIPC_MEDIA_TYPE_ETH;
  56         memcpy(msg + TIPC_MEDIA_ADDR_OFFSET, addr->value, ETH_ALEN);
  57         return 0;
  58 }
  59 
  60 /* Convert raw mac address format to media addr format */
  61 static int tipc_eth_raw2addr(struct tipc_bearer *b,
  62                              struct tipc_media_addr *addr,
  63                              char *msg)
  64 {
  65         char bcast_mac[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  66 
  67         memset(addr, 0, sizeof(*addr));
  68         ether_addr_copy(addr->value, msg);
  69         addr->media_id = TIPC_MEDIA_TYPE_ETH;
  70         addr->broadcast = !memcmp(addr->value, bcast_mac, ETH_ALEN);
  71         return 0;
  72 }
  73 
  74 /* Convert discovery msg addr format to Ethernet media addr format */
  75 static int tipc_eth_msg2addr(struct tipc_bearer *b,
  76                              struct tipc_media_addr *addr,
  77                              char *msg)
  78 {
  79         /* Skip past preamble: */
  80         msg += TIPC_MEDIA_ADDR_OFFSET;
  81         return tipc_eth_raw2addr(b, addr, msg);
  82 }
  83 
  84 /* Ethernet media registration info */
  85 struct tipc_media eth_media_info = {
  86         .send_msg       = tipc_l2_send_msg,
  87         .enable_media   = tipc_enable_l2_media,
  88         .disable_media  = tipc_disable_l2_media,
  89         .addr2str       = tipc_eth_addr2str,
  90         .addr2msg       = tipc_eth_addr2msg,
  91         .msg2addr       = tipc_eth_msg2addr,
  92         .raw2addr       = tipc_eth_raw2addr,
  93         .priority       = TIPC_DEF_LINK_PRI,
  94         .tolerance      = TIPC_DEF_LINK_TOL,
  95         .window         = TIPC_DEF_LINK_WIN,
  96         .type_id        = TIPC_MEDIA_TYPE_ETH,
  97         .hwaddr_len     = ETH_ALEN,
  98         .name           = "eth"
  99 };

/* [<][>][^][v][top][bottom][index][help] */