@@ -36,7 +36,8 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
3636 size_t mac_addr_len ,
3737 const uint8_t * bcast_addr ,
3838 const struct ether_addr * eth_mac ,
39- uint16_t arp_type , uint8_t dhcp_hlen ) {
39+ uint16_t arp_type , uint8_t dhcp_hlen ,
40+ uint16_t port ) {
4041 struct sock_filter filter [] = {
4142 BPF_STMT (BPF_LD + BPF_W + BPF_LEN , 0 ), /* A <- packet length */
4243 BPF_JUMP (BPF_JMP + BPF_JGE + BPF_K , sizeof (DHCPPacket ), 1 , 0 ), /* packet >= DHCPPacket ? */
@@ -53,7 +54,7 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
5354 BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K , 0 , 1 , 0 ), /* A == 0 ? */
5455 BPF_STMT (BPF_RET + BPF_K , 0 ), /* ignore */
5556 BPF_STMT (BPF_LD + BPF_H + BPF_ABS , offsetof(DHCPPacket , udp .dest )), /* A <- UDP destination port */
56- BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K , DHCP_PORT_CLIENT , 1 , 0 ), /* UDP destination port == DHCP client port ? */
57+ BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K , port , 1 , 0 ), /* UDP destination port == DHCP client port ? */
5758 BPF_STMT (BPF_RET + BPF_K , 0 ), /* ignore */
5859 BPF_STMT (BPF_LD + BPF_B + BPF_ABS , offsetof(DHCPPacket , dhcp .op )), /* A <- DHCP op */
5960 BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K , BOOTREPLY , 1 , 0 ), /* op == BOOTREPLY ? */
@@ -125,7 +126,8 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
125126
126127int dhcp_network_bind_raw_socket (int ifindex , union sockaddr_union * link ,
127128 uint32_t xid , const uint8_t * mac_addr ,
128- size_t mac_addr_len , uint16_t arp_type ) {
129+ size_t mac_addr_len , uint16_t arp_type ,
130+ uint16_t port ) {
129131 static const uint8_t eth_bcast [] = { 0xFF , 0xFF , 0xFF , 0xFF , 0xFF , 0xFF };
130132 /* Default broadcast address for IPoIB */
131133 static const uint8_t ib_bcast [] = {
@@ -151,7 +153,7 @@ int dhcp_network_bind_raw_socket(int ifindex, union sockaddr_union *link,
151153 return - EINVAL ;
152154
153155 return _bind_raw_socket (ifindex , link , xid , mac_addr , mac_addr_len ,
154- bcast_addr , & eth_mac , arp_type , dhcp_hlen );
156+ bcast_addr , & eth_mac , arp_type , dhcp_hlen , port );
155157}
156158
157159int dhcp_network_bind_udp_socket (be32_t address , uint16_t port ) {
0 commit comments