1*6fb93e47Sdlg /* $OpenBSD: frame.h,v 1.1 2024/12/15 11:00:05 dlg Exp $ */ 2*6fb93e47Sdlg 3*6fb93e47Sdlg /* 4*6fb93e47Sdlg * Copyright (c) 2024 David Gwynne <dlg@openbsd.org> 5*6fb93e47Sdlg * 6*6fb93e47Sdlg * Permission to use, copy, modify, and distribute this software for any 7*6fb93e47Sdlg * purpose with or without fee is hereby granted, provided that the above 8*6fb93e47Sdlg * copyright notice and this permission notice appear in all copies. 9*6fb93e47Sdlg * 10*6fb93e47Sdlg * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11*6fb93e47Sdlg * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12*6fb93e47Sdlg * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13*6fb93e47Sdlg * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14*6fb93e47Sdlg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15*6fb93e47Sdlg * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16*6fb93e47Sdlg * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17*6fb93e47Sdlg */ 18*6fb93e47Sdlg 19*6fb93e47Sdlg #ifndef _NET_FRAME_H_ 20*6fb93e47Sdlg #define _NET_FRAME_H_ 21*6fb93e47Sdlg 22*6fb93e47Sdlg #define FRAME_ADDRLEN 8 /* big enough for Ethernet */ 23*6fb93e47Sdlg #define FRAME_DATALEN 32 24*6fb93e47Sdlg 25*6fb93e47Sdlg struct sockaddr_frame { 26*6fb93e47Sdlg uint8_t sfrm_len; 27*6fb93e47Sdlg uint8_t sfrm_family; /* AF_FRAME */ 28*6fb93e47Sdlg uint16_t sfrm_proto; 29*6fb93e47Sdlg unsigned int sfrm_ifindex; 30*6fb93e47Sdlg uint8_t sfrm_addr[FRAME_ADDRLEN]; 31*6fb93e47Sdlg char sfrm_ifname[IFNAMSIZ]; 32*6fb93e47Sdlg uint8_t sfrm_data[FRAME_DATALEN]; 33*6fb93e47Sdlg }; 34*6fb93e47Sdlg 35*6fb93e47Sdlg #define FRAME_RECVDSTADDR 0 /* int */ 36*6fb93e47Sdlg #define FRAME_RECVPRIO 1 /* int */ 37*6fb93e47Sdlg #define FRAME_ADD_MEMBERSHIP 64 /* struct frame_mreq */ 38*6fb93e47Sdlg #define FRAME_DEL_MEMBERSHIP 65 /* struct frame_mreq */ 39*6fb93e47Sdlg #define FRAME_SENDPRIO 66 /* int: IF_HDRPRIO_{MIN-MAX,PACKET} */ 40*6fb93e47Sdlg 41*6fb93e47Sdlg struct frame_mreq { 42*6fb93e47Sdlg unsigned int fmr_ifindex; 43*6fb93e47Sdlg uint8_t fmr_addr[FRAME_ADDRLEN]; 44*6fb93e47Sdlg char fmr_ifname[IFNAMSIZ]; 45*6fb93e47Sdlg }; 46*6fb93e47Sdlg 47*6fb93e47Sdlg #endif /* _NET_FRAME_H_ */ 48