Fixed API arp cidr search (#10780)

This commit is contained in:
Tony Murray
2019-11-05 15:16:29 -06:00
committed by Neil Lathwood
parent 91d74d067b
commit 717ecd4125
2 changed files with 5 additions and 4 deletions

View File

@@ -1958,6 +1958,7 @@ function list_ip_networks()
function list_arp(\Illuminate\Http\Request $request) function list_arp(\Illuminate\Http\Request $request)
{ {
$ip = $request->route('ip'); $ip = $request->route('ip');
$cidr = $request->route('cidr');
$hostname = $request->get('device'); $hostname = $request->get('device');
if (empty($ip)) { if (empty($ip)) {
@@ -1969,9 +1970,9 @@ function list_arp(\Illuminate\Http\Request $request)
if ($ip === "all") { if ($ip === "all") {
$device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname); $device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
$arp = dbFetchRows("SELECT `ipv4_mac`.* FROM `ipv4_mac` LEFT JOIN `ports` ON `ipv4_mac`.`port_id` = `ports`.`port_id` WHERE `ports`.`device_id` = ?", [$device_id]); $arp = dbFetchRows("SELECT `ipv4_mac`.* FROM `ipv4_mac` LEFT JOIN `ports` ON `ipv4_mac`.`port_id` = `ports`.`port_id` WHERE `ports`.`device_id` = ?", [$device_id]);
} elseif (str_contains($ip, '/')) { } elseif ($cidr) {
try { try {
$ip = new IPv4($ip); $ip = new IPv4("$ip/$cidr");
$arp = dbFetchRows( $arp = dbFetchRows(
'SELECT * FROM `ipv4_mac` WHERE (inet_aton(`ipv4_address`) & ?) = ?', 'SELECT * FROM `ipv4_mac` WHERE (inet_aton(`ipv4_address`) & ?) = ?',
[ip2long($ip->getNetmask()), ip2long($ip->getNetworkAddress())] [ip2long($ip->getNetmask()), ip2long($ip->getNetworkAddress())]

View File

@@ -40,7 +40,7 @@ Route::group(['prefix' => 'v0', 'namespace' => '\App\Api\Controllers'], function
Route::get('links/{id}', 'LegacyApiController@get_link')->name('get_link'); Route::get('links/{id}', 'LegacyApiController@get_link')->name('get_link');
Route::get('locations', 'LegacyApiController@list_locations')->name('list_locations'); Route::get('locations', 'LegacyApiController@list_locations')->name('list_locations');
Route::get('ip/addresses', 'LegacyApiController@list_ip_addresses')->name('list_ip_addresses'); Route::get('ip/addresses', 'LegacyApiController@list_ip_addresses')->name('list_ip_addresses');
Route::get('ip/arp/{ip}', 'LegacyApiController@list_arp')->name('list_arp'); Route::get('ip/arp/{ip}/{cidr?}', 'LegacyApiController@list_arp')->name('list_arp');
Route::get('ip/networks', 'LegacyApiController@list_ip_networks')->name('list_ip_networks'); Route::get('ip/networks', 'LegacyApiController@list_ip_networks')->name('list_ip_networks');
Route::get('ip/networks/{id}/ip', 'LegacyApiController@get_network_ip_addresses')->name('get_network_ip_addresses'); Route::get('ip/networks/{id}/ip', 'LegacyApiController@get_network_ip_addresses')->name('get_network_ip_addresses');
}); });