FD.io VPP  v18.10-32-g1161dda
Vector Packet Processing
mac_address.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef __MAC_ADDRESS_H__
17 #define __MAC_ADDRESS_H__
18 
19 #include <vnet/ethernet/ethernet.h>
20 
21 typedef struct mac_address_t_
22 {
23  u8 bytes[6];
25 
26 extern const mac_address_t ZERO_MAC_ADDRESS;
27 
30 {
31  clib_memcpy (mac->bytes, bytes, sizeof (*mac));
32 }
33 
36 {
37  return (ethernet_mac_address_is_zero (mac->bytes));
38 }
39 
42 {
43  return (ethernet_mac_address_u64 (mac->bytes));
44 }
45 
48 {
50 }
51 
52 extern u8 *format_mac_address_t (u8 * s, va_list * args);
53 
54 #endif
55 
56 /*
57  * fd.io coding-style-patch-verification: ON
58  *
59  * Local Variables:
60  * eval: (c-set-style "gnu")
61  * End:
62  */
unsigned long u64
Definition: types.h:89
static_always_inline int mac_address_is_zero(const mac_address_t *mac)
Definition: mac_address.h:35
unsigned char u8
Definition: types.h:56
const mac_address_t ZERO_MAC_ADDRESS
Definition: mac_address.c:18
static u64 ethernet_mac_address_u64(const u8 *a)
Definition: ethernet.h:49
#define static_always_inline
Definition: clib.h:95
static int ethernet_mac_address_is_zero(const u8 *mac)
Definition: ethernet.h:77
static_always_inline void mac_address_from_bytes(mac_address_t *mac, const u8 *bytes)
Definition: mac_address.h:29
static void ethernet_mac_address_from_u64(u64 u, u8 *a)
Definition: ethernet.h:59
static_always_inline void mac_address_from_u64(u64 u, mac_address_t *mac)
Definition: mac_address.h:47
#define clib_memcpy(a, b, c)
Definition: string.h:75
struct mac_address_t_ mac_address_t
static_always_inline u64 mac_address_as_u64(const mac_address_t *mac)
Definition: mac_address.h:41
u8 * format_mac_address_t(u8 *s, va_list *args)
Definition: mac_address.c:25
vl_api_mac_address_t mac
Definition: gbp.api:31