--- link.module	2009-11-09 08:11:26.000000000 +0200
+++ link.module.patched	2010-07-10 17:11:21.706079077 +0300
@@ -47,6 +47,14 @@ function link_field_settings($op, $field
         '#description' => t('If checked, the URL field is optional and submitting a title alone will be acceptable. If the URL is omitted, the title will be displayed as plain text.'),
       );
 
+      $form['only_external_link'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Only External Link'),
+        '#default_value' => $field['only_external_link'],
+        '#return_value' => 'optional',
+        '#description' => t('If checked, the URL field will be verified as a valid external URL during validation.'),
+      );
+
       $title_options = array(
         'optional' => t('Optional Title'),
         'required' => t('Required Title'),
@@ -140,7 +148,7 @@ function link_field_settings($op, $field
       break;
 
     case 'save':
-      return array('attributes', 'display', 'url', 'title', 'title_value', 'enable_tokens');
+      return array('attributes', 'display', 'url', 'title', 'title_value', 'enable_tokens', 'only_external_link');
 
     case 'database columns':
       return array(
@@ -271,6 +279,11 @@ function _link_process(&$item, $delta = 
 
 function _link_validate(&$item, $delta, $field, $node, &$optional_field_found) {
   if ($item['url'] && !(isset($field['widget']['default_value'][$delta]['url']) && $item['url'] == $field['widget']['default_value'][$delta]['url'] && !$field['required'])) {
+    // Validate external link
+    if (isset($field['only_external_link']) && $field['only_external_link'] && valid_url($item['url'], true) == FALSE) {
+      form_set_error($field['field_name'] .']['. $delta .'][url', t('Not a valid URL.'));
+    }
+
     // Validate the link.
     if (link_validate_url(trim($item['url'])) == FALSE) {
       form_set_error($field['field_name'] .']['. $delta .'][url', t('Not a valid URL.'));
