mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Add --add-mac=text option.
This commit is contained in:
@@ -604,7 +604,7 @@ configured a zero is added in front of the label. ::1 becomes 0--1.
|
|||||||
The address range can be of the form
|
The address range can be of the form
|
||||||
<ip address>,<ip address> or <ip address>/<netmask>
|
<ip address>,<ip address> or <ip address>/<netmask>
|
||||||
.TP
|
.TP
|
||||||
.B --add-mac[=base64]
|
.B --add-mac[=base64|text]
|
||||||
Add the MAC address of the requestor to DNS queries which are
|
Add the MAC address of the requestor to DNS queries which are
|
||||||
forwarded upstream. This may be used to DNS filtering by the upstream
|
forwarded upstream. This may be used to DNS filtering by the upstream
|
||||||
server. The MAC address can only be added if the requestor is on the same
|
server. The MAC address can only be added if the requestor is on the same
|
||||||
@@ -613,7 +613,7 @@ is not yet standardised, so this should be considered
|
|||||||
experimental. Also note that exposing MAC addresses in this way may
|
experimental. Also note that exposing MAC addresses in this way may
|
||||||
have security and privacy implications. The warning about caching
|
have security and privacy implications. The warning about caching
|
||||||
given for --add-subnet applies to --add-mac too. An alternative encoding of the
|
given for --add-subnet applies to --add-mac too. An alternative encoding of the
|
||||||
MAC, as base64, is enabled by adding the "base64" parameter.
|
MAC, as base64, is enabled by adding the "base64" parameter and a human-readable encoding of hex-and-colons is enabled by added the "text" parameter.
|
||||||
.TP
|
.TP
|
||||||
.B --add-cpe-id=<string>
|
.B --add-cpe-id=<string>
|
||||||
Add a arbitrary identifying string to o DNS queries which are
|
Add a arbitrary identifying string to o DNS queries which are
|
||||||
|
|||||||
@@ -237,7 +237,8 @@ struct event_desc {
|
|||||||
#define OPT_TFTP_NO_FAIL 52
|
#define OPT_TFTP_NO_FAIL 52
|
||||||
#define OPT_SCRIPT_ARP 53
|
#define OPT_SCRIPT_ARP 53
|
||||||
#define OPT_MAC_B64 54
|
#define OPT_MAC_B64 54
|
||||||
#define OPT_LAST 55
|
#define OPT_MAC_HEX 55
|
||||||
|
#define OPT_LAST 56
|
||||||
|
|
||||||
/* extra flags for my_syslog, we use a couple of facilities since they are known
|
/* extra flags for my_syslog, we use a couple of facilities since they are known
|
||||||
not to occupy the same bits as priorities, no matter how syslog.h is set up. */
|
not to occupy the same bits as priorities, no matter how syslog.h is set up. */
|
||||||
|
|||||||
13
src/edns0.c
13
src/edns0.c
@@ -223,14 +223,19 @@ static size_t add_dns_client(struct dns_header *header, size_t plen, unsigned ch
|
|||||||
{
|
{
|
||||||
int maclen;
|
int maclen;
|
||||||
unsigned char mac[DHCP_CHADDR_MAX];
|
unsigned char mac[DHCP_CHADDR_MAX];
|
||||||
char encode[8]; /* handle 6 byte MACs */
|
char encode[18]; /* handle 6 byte MACs */
|
||||||
|
|
||||||
if ((maclen = find_mac(l3, mac, 1, now)) == 6)
|
if ((maclen = find_mac(l3, mac, 1, now)) == 6)
|
||||||
|
{
|
||||||
|
if (option_bool(OPT_MAC_HEX))
|
||||||
|
print_mac(encode, mac, maclen);
|
||||||
|
else
|
||||||
{
|
{
|
||||||
encoder(mac, encode);
|
encoder(mac, encode);
|
||||||
encoder(mac+3, encode+4);
|
encoder(mac+3, encode+4);
|
||||||
|
encode[8] = 0;
|
||||||
plen = add_pseudoheader(header, plen, limit, PACKETSZ, EDNS0_OPTION_NOMDEVICEID, (unsigned char *)encode, 8, 0);
|
}
|
||||||
|
plen = add_pseudoheader(header, plen, limit, PACKETSZ, EDNS0_OPTION_NOMDEVICEID, (unsigned char *)encode, strlen(encode), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return plen;
|
return plen;
|
||||||
@@ -377,7 +382,7 @@ size_t add_edns0_config(struct dns_header *header, size_t plen, unsigned char *l
|
|||||||
if (option_bool(OPT_ADD_MAC))
|
if (option_bool(OPT_ADD_MAC))
|
||||||
plen = add_mac(header, plen, limit, source, now);
|
plen = add_mac(header, plen, limit, source, now);
|
||||||
|
|
||||||
if (option_bool(OPT_MAC_B64))
|
if (option_bool(OPT_MAC_B64) || option_bool(OPT_MAC_HEX))
|
||||||
plen = add_dns_client(header, plen, limit, source, now);
|
plen = add_dns_client(header, plen, limit, source, now);
|
||||||
|
|
||||||
if (daemon->dns_client_id)
|
if (daemon->dns_client_id)
|
||||||
|
|||||||
@@ -2172,7 +2172,8 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
unhide_metas(arg);
|
unhide_metas(arg);
|
||||||
if (strcmp(arg, "base64") == 0)
|
if (strcmp(arg, "base64") == 0)
|
||||||
set_option_bool(OPT_MAC_B64);
|
set_option_bool(OPT_MAC_B64);
|
||||||
else
|
else if (strcmp(arg, "text") == 0)
|
||||||
|
set_option_bool(OPT_MAC_HEX);
|
||||||
ret_err(gen_err);
|
ret_err(gen_err);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user