Blame view

net/wol.h 1.4 KB
d8970dae2   Lothar Felten   net: Add new wol ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
  /* SPDX-License-Identifier: GPL-2.0+ */
  /*
   * wol - Wake-on-LAN
   *
   * Supports both Wake-on-LAN packet types:
   * - EtherType 0x0842 packets
   * - UDP packets on ports 0, 7 and 9.
   *
   * Copyright 2018 Lothar Felten, lothar.felten@gmail.com
   */
  
  #if defined(CONFIG_CMD_WOL)
  
  #ifndef __WOL_H__
  #define __WOL_H__
  
  #include <net.h>
  
  /**********************************************************************/
  
  #define WOL_SYNC_BYTE			0xFF
  #define WOL_SYNC_COUNT			6
  #define WOL_MAC_REPETITIONS		16
  #define WOL_DEFAULT_TIMEOUT		5000
  #define WOL_PASSWORD_4B			4
  #define WOL_PASSWORD_6B			6
  
  /*
   * Wake-on-LAN header
   */
  struct wol_hdr {
  	u8	wol_sync[WOL_SYNC_COUNT];			/* sync bytes */
  	u8	wol_dest[WOL_MAC_REPETITIONS * ARP_HLEN];	/* 16x MAC */
  	u8	wol_passwd[0];					/* optional */
  };
  
  /*
   * Initialize wol (beginning of netloop)
   */
  void wol_start(void);
  
  /*
   * Check incoming Wake-on-LAN packet for:
   * - sync bytes
   * - sixteen copies of the target MAC address
   *
   * Optionally store the four or six byte password in the environment
   * variable "wolpassword"
   *
   * @param ip IP header in the packet
   * @param len Packet length
   */
  void wol_receive(struct ip_udp_hdr *ip, unsigned int len);
  
  /*
   * Set the timeout for the reception of a Wake-on-LAN packet
   *
   * @param timeout in milliseconds
   */
  void wol_set_timeout(ulong timeout);
  
  /**********************************************************************/
  
  #endif /* __WOL_H__ */
  #endif