#include <stdint.h>
Go to the source code of this file.
Functions | |
| FILE_LICENCE (GPL2_OR_LATER) | |
| int | create_fakedhcpdiscover (struct net_device *netdev, void *data, size_t max_len) |
| Create fake DHCPDISCOVER packet. | |
| int | create_fakedhcpack (struct net_device *netdev, void *data, size_t max_len) |
| Create fake DHCPACK packet. | |
| int | create_fakepxebsack (struct net_device *netdev, void *data, size_t max_len) |
| Create fake PXE Boot Server ACK packet. | |
Definition in file fakedhcp.h.
| FILE_LICENCE | ( | GPL2_OR_LATER | ) |
| int create_fakedhcpdiscover | ( | struct net_device * | netdev, | |
| void * | data, | |||
| size_t | max_len | |||
| ) |
Create fake DHCPDISCOVER packet.
| netdev | Network device | |
| data | Buffer for DHCP packet | |
| max_len | Size of DHCP packet buffer |
| rc | Return status code |
Definition at line 110 of file fakedhcp.c.
References DBG, dhcp_create_request(), DHCPDISCOVER, and strerror().
00111 { 00112 struct dhcp_packet dhcppkt; 00113 struct in_addr ciaddr = { 0 }; 00114 int rc; 00115 00116 if ( ( rc = dhcp_create_request ( &dhcppkt, netdev, DHCPDISCOVER, 00117 ciaddr, data, max_len ) ) != 0 ) { 00118 DBG ( "Could not create DHCPDISCOVER: %s\n", 00119 strerror ( rc ) ); 00120 return rc; 00121 } 00122 00123 return 0; 00124 }
| int create_fakedhcpack | ( | struct net_device * | netdev, | |
| void * | data, | |||
| size_t | max_len | |||
| ) |
Create fake DHCPACK packet.
| netdev | Network device | |
| data | Buffer for DHCP packet | |
| max_len | Size of DHCP packet buffer |
| rc | Return status code |
Definition at line 136 of file fakedhcp.c.
References copy_settings(), DBG, dhcp_create_packet(), DHCPACK, netdev_settings(), NULL, and strerror().
Referenced by create_fakepxebsack(), and nbi_prepare_dhcp().
00137 { 00138 struct dhcp_packet dhcppkt; 00139 int rc; 00140 00141 /* Create base DHCPACK packet */ 00142 if ( ( rc = dhcp_create_packet ( &dhcppkt, netdev, DHCPACK, NULL, 0, 00143 data, max_len ) ) != 0 ) { 00144 DBG ( "Could not create DHCPACK: %s\n", strerror ( rc ) ); 00145 return rc; 00146 } 00147 00148 /* Merge in globally-scoped settings, then netdev-specific 00149 * settings. Do it in this order so that netdev-specific 00150 * settings take precedence regardless of stated priorities. 00151 */ 00152 if ( ( rc = copy_settings ( &dhcppkt, NULL ) ) != 0 ) { 00153 DBG ( "Could not set DHCPACK global settings: %s\n", 00154 strerror ( rc ) ); 00155 return rc; 00156 } 00157 if ( ( rc = copy_settings ( &dhcppkt, 00158 netdev_settings ( netdev ) ) ) != 0 ) { 00159 DBG ( "Could not set DHCPACK netdev settings: %s\n", 00160 strerror ( rc ) ); 00161 return rc; 00162 } 00163 00164 return 0; 00165 }
| int create_fakepxebsack | ( | struct net_device * | netdev, | |
| void * | data, | |||
| size_t | max_len | |||
| ) |
Create fake PXE Boot Server ACK packet.
| netdev | Network device | |
| data | Buffer for DHCP packet | |
| max_len | Size of DHCP packet buffer |
| rc | Return status code |
Definition at line 177 of file fakedhcp.c.
References copy_settings(), create_fakedhcpack(), DBG, dhcp_create_packet(), DHCPACK, find_settings(), NULL, PROXYDHCP_SETTINGS_NAME, PXEBS_SETTINGS_NAME, and strerror().
00178 { 00179 struct dhcp_packet dhcppkt; 00180 struct settings *proxy_settings; 00181 struct settings *pxebs_settings; 00182 int rc; 00183 00184 /* Identify available settings */ 00185 proxy_settings = find_settings ( PROXYDHCP_SETTINGS_NAME ); 00186 pxebs_settings = find_settings ( PXEBS_SETTINGS_NAME ); 00187 if ( ( ! proxy_settings ) && ( ! pxebs_settings ) ) { 00188 /* No PXE boot server; return the regular DHCPACK */ 00189 return create_fakedhcpack ( netdev, data, max_len ); 00190 } 00191 00192 /* Create base DHCPACK packet */ 00193 if ( ( rc = dhcp_create_packet ( &dhcppkt, netdev, DHCPACK, NULL, 0, 00194 data, max_len ) ) != 0 ) { 00195 DBG ( "Could not create PXE BS ACK: %s\n", 00196 strerror ( rc ) ); 00197 return rc; 00198 } 00199 00200 /* Merge in ProxyDHCP options */ 00201 if ( proxy_settings && 00202 ( ( rc = copy_settings ( &dhcppkt, proxy_settings ) ) != 0 ) ) { 00203 DBG ( "Could not copy ProxyDHCP settings: %s\n", 00204 strerror ( rc ) ); 00205 return rc; 00206 } 00207 00208 /* Merge in BootServerDHCP options, if present */ 00209 if ( pxebs_settings && 00210 ( ( rc = copy_settings ( &dhcppkt, pxebs_settings ) ) != 0 ) ) { 00211 DBG ( "Could not copy PXE BS settings: %s\n", 00212 strerror ( rc ) ); 00213 return rc; 00214 } 00215 00216 return 0; 00217 }
1.5.7.1